如何在硒中解雇JS事件?

时间:2011-10-08 09:47:17

标签: java selenium

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

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

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

2 个答案:

答案 0 :(得分:18)

不幸的是,Selenium WebDriver设计者在Selenium 2中明确decided not to include这个功能。

  

故意决定不在WebDriver中包含此功能,   因为它通常是解决合成事件的黑客行为   行为正常。我们宁愿通过提供伟大的东西来消除这种需求   支持本机事件,因此我们将继续改进这一点   向前。用户永远不会发起焦点事件,他们会点击   形式控制。这也是你的测试应该做的。

话虽如此,您可以执行您想要的任何JavaScript代码。因此,您应该查看如何使用javascript 触发事件。看看this StackOverflow question获取灵感。

然后你可以这样做:

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

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

答案 1 :(得分:5)

另一种解决方案:

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