我有以下HTML:
<button name="btnG" class="gbqfb" aria-label="Google Search" id="gbqfb"><span class="gbqfi"></span></button>
我下面的单击“ Google搜索”按钮的代码在WebDriver中使用Java时效果很好。
driver.findElement(By.id("gbqfb")).click();
我想将JavaScript与WebDriver一起使用以单击按钮。我该怎么做?
通过JavaScript执行点击具有一些您应该注意的行为。例如,如果绑定到onclick元素事件的代码调用window.alert(),则可能会发现Selenium代码挂起,具体取决于浏览器驱动程序的实现。也就是说,您可以使用JavascriptExecutor该类来执行此操作。我的解决方案与其他建议的解决方案不同,但是,您仍然可以使用WebDriver方法来定位元素。
onclick
window.alert()
JavascriptExecutor
// Assume driver is a valid WebDriver instance that // has been properly instantiated elsewhere. WebElement element = driver.findElement(By.id("gbqfd")); JavascriptExecutor executor = (JavascriptExecutor)driver; executor.executeScript("arguments[0].click();", element);
您还应该注意,使用接口的click()方法可能会更好WebElement,但是在实例化驱动程序之前禁用本机事件。这将实现相同的目标(具有相同的潜在限制),但不会迫使您编写和维护自己的JavaScript。
click()
WebElement