如何在selenium中解雇JS事件?

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

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

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

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

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

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

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

 FirefoxDriver driver = new FirefoxDriver(); driver.ExecuteScript("[your fire event javascript code]"); 

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

另一种方案:

 ((JavascriptExecutor) driver).executeScript("return document.getElementById('element').blur()");