Actions through WebDriver will not trigger the blur event

痴心易碎 提交于 2019-12-05 11:35:19

Here are a couple of ideas:

Use a TAB to go to the next field. This would simulate a user hitting the TAB key to go on to the next field, and should theoretically simulate the browser's blur event.

You can do this by using the sendKeys method:

WebElement element = driver.findElement(By.id('newOrder:shipToAddressType'));
element.sendKeys("\t");

Inject javascript to simulate the blur method. You have already attempted to try this it looks like, but you forgot one important aspect of executeScript -- always return your code!

JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("return document.getElementById('newOrder:shipToAddressType').blur()");

One last thing, it would be helpful info to include which browser your are using, just for informational purposes.

UPDATE

Try this to give direct focus to the element, and then unfocus (blur) it:

WebElement element = driver.findElement(By.id('newOrder:shipToAddressType'));
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("arguments[0].focus(); arguments[0].blur(); return true", element);

Another option is to try triggering a click on something besides the input, like the body.

driver.findElement(By.tagName("body")).click();

This is working for me.

Try using the Actions class, WebDriver support mouse and user interaction using this class Something like this:

WebElement element = driver.findElement(By.id('newOrder:shipToAddressType'));
(new Actions(driver)).moveToElement(element ,500,500).build().perform();

This will move as many pixels as you set it and trigger the blur event

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!