我正在使用selenium WebDriver语法。我知道,在基于selenium server的语法中,您可以通过执行以下操作来触发javascript事件:
Selenium selenium = new DefaultSelenium("localhost", server.getPort(),
"*iexplore", "http://www.eviltester.com");
selenium.fireEvent("lteq30", "blur");
如何在使用WebDriver创建的应用程序中执行相同操作(例如,FirefoxDriver)?
答案 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()");