如何测试Blur-Firefox Selenium驱动程序?
我正在使用selenium如何测试Blur-Firefox Selenium驱动程序?,selenium,firefox,selenium-firefoxdriver,firefox-driver,Selenium,Firefox,Selenium Firefoxdriver,Firefox Driver,我正在使用selenium2.24Firefox驱动程序来测试输入框的blur事件。目前,在我向输入框发送键后,我让selenium单击另一个触发输入框模糊的区域 然而,我认为这不是一个好方法,有人知道一个更好的方法来测试这一点吗 非常感谢。我做了一个小调查。我发现selenium 2.0不支持fire事件。看见 这段代码对我来说很有用: driver.get("http://www.onliner.by/"); String cssSelctr= "div.b-top-se
2.24
Firefox驱动程序来测试输入框的blur事件。目前,在我向输入框发送键后,我让selenium单击另一个触发输入框模糊的区域
然而,我认为这不是一个好方法,有人知道一个更好的方法来测试这一点吗
非常感谢。我做了一个小调查。我发现selenium 2.0不支持fire事件。看见 这段代码对我来说很有用:
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());
希望这对您有所帮助)selenium WebDriver不会正确触发模糊之类的事件。但是,您可以手动触发它们。假设您正在使用jquery:
firefoxWebDriver.executeScript("$('#yourID').blur()");
或者不使用jquery:
firefoxWebDriver.executeScript("document.querySelector('#yourID').blur()");
用相关的元素ID替换“elementId”。它对我来说很好。“驱动程序”是您的Selenium驱动程序
JavascriptExecutor jsexec=(JavascriptExecutor)驱动程序;
jsexec.executeScript(“document.getElementById(““+elementId+”)).onblur();”
谢谢尤金·波尔希科夫。我必须将函数更改为调用
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或其他CSS选择器) 幸运的是,存在的概念。因此,如果您希望测试元素的模糊功能,那么测试该功能的本机javascript方法(不依赖于jQuery或类似方法)是:
driver.ExecuteScript("!!document.activeElement ? document.activeElement.blur() : 0");
我不记得这是否适用于onblur事件,但请尝试webElement.sendKeys(Keys.RETURN);如果您使用的是C#,那么您可以在字符串末尾插入一个
选项卡字符以发送到元素:ele.SendKeys(“my string\t”)
someelement.SendKeys(“\t”)也适用于Java,最短解决方案不幸的是,使用该方法将导致异常:。。。。。。。。。。。位于org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:188)的java.lang.reflect.Constructor.newInstance(Constructor.java:513)位于org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:472)在org.openqa.selenium.remote.RemoteWebDriver.executeScript(RemoteWebDriver.java:381)org.openqa.seleniumemulation.JavascriptLibrary.callEmbeddedHtmlUtils(JavascriptLibrary.java:82)中,此方法也适用于HtmlUnitDriver、ChromeDriver、SafariDriver和InternetExplorerDriver。