我正在使用硒2.24
Firefox驱动程序来测试输入框的blur事件。当前,在将sendKeys
输入到输入框后,我让硒单击另一个区域,该区域触发输入框模糊。
但是,我认为这不是一个好方法,任何人都知道一种更好的方法来进行测试?
非常感谢。
我进行了小规模的调查。我发现硒2.0不支持火灾事件。参见details。所以这段代码对我有用:
driver.get("http://www.onliner.by/");
String cssSelctr= "div.b-top-search-box input[id=\"g-search-input\"]";
WebElement testElement=driver.findElement(By.cssSelector(cssSelctr));
testElement.sendKeys("fvsdfs");
JavascriptExecutor js = (JavascriptExecutor) driver;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("var x = $(\'"+cssSelctr+"\');");
stringBuilder.append("x.blur();");
js.executeScript(stringBuilder.toString());
希望现在可以帮助您)
硒WebDriver无法正确触发诸如模糊之类的事件。但是,您可以手动触发它们。假设您正在使用jquery:
firefoxWebDriver.executeScript("$('#yourID').blur()");
或者没有jquery:
firefoxWebDriver.executeScript("document.querySelector('#yourID').blur()");
某些元素没有用于测试目的的适当区分符(例如,您希望在测试中绑定的ID或其他CSS选择器)。
幸运的是,存在activeElement的概念。因此,如果您要测试元素的模糊功能,则可以使用本机javascript方法(不依赖jQuery或类似方法)进行测试:
driver.ExecuteScript("!!document.activeElement ? document.activeElement.blur() : 0");
感谢eugene.polschikov。我必须更改函数以调用triggerHandler
才能使其对我有用。请参阅以下内容-只需将“ element-id”替换为您元素的ID。
JavascriptExecutor jsexec = (JavascriptExecutor) driver;
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("var x = $('" + element-id + "');");
stringBuilder.append("x.triggerHandler('blur');");
jsexec.executeScript(stringBuilder.toString());
希望有帮助。
用相关元素ID替换“ elementId”。这对我来说可以。 “驱动程序”是您的Selenium驱动程序
[JavascriptExecutor jsexec =(JavascriptExecutor)驱动程序;jsexec.executeScript(“ document.getElementById('” + elementId +“')。onblur();”);