如何在硒中解雇JS事件?

Ars*_*ray 12 java selenium

我正在使用selenium WebDriver语法.我知道,在基于selenium server的语法中,您可以通过执行以下操作来触发javascript事件:

Selenium selenium = new DefaultSelenium("localhost", server.getPort(),
            "*iexplore", "http://www.eviltester.com");
selenium.fireEvent("lteq30", "blur");
Run Code Online (Sandbox Code Playgroud)

如何在使用WebDriver创建的应用程序中执行相同操作(例如,FirefoxDriver)?

pre*_*sto 18

不幸的是,Selenium WebDriver设计者明确决定不在 Selenium 2中包含此功能.

这是一个故意决定不在WebDriver中包含此功能,因为它通常是一个解决合成事件不正常的黑客.我们宁愿通过为原生事件提供强大支持来消除这种需求,因此我们将继续改进这一需求.用户永远不会触发焦点事件,他们会单击表单控件.这也是你的测试应该做的.

话虽如此,您可以执行您想要的任何JavaScript代码.因此,您应该研究如何使用javascript触发事件.看一下这个StackOverflow问题的灵感.

然后你可以做这样的事情:

FirefoxDriver driver = new FirefoxDriver();
driver.ExecuteScript("[your fire event javascript code]");
Run Code Online (Sandbox Code Playgroud)

我相信你可以创建一个包装函数来基本完成同样的事情fireEvent.


小智 5

另一种方案:

((JavascriptExecutor) driver).executeScript("return document.getElementById('element').blur()");
Run Code Online (Sandbox Code Playgroud)