Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何测试Blur-Firefox Selenium驱动程序?_Selenium_Firefox_Selenium Firefoxdriver_Firefox Driver - Fatal编程技术网

如何测试Blur-Firefox 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

我正在使用selenium
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。