一尘不染

如何使用JavaScript单击Selenium WebDriver中的元素

javascript

我有以下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一起使用以单击按钮。我该怎么做?


阅读 289

收藏
2020-05-01

共1个答案

一尘不染

通过JavaScript执行点击具有一些您应该注意的行为。例如,如果绑定到onclick元素事件的代码调用window.alert(),则可能会发现Selenium代码挂起,具体取决于浏览器驱动程序的实现。也就是说,您可以使用JavascriptExecutor该类来执行此操作。我的解决方案与其他建议的解决方案不同,但是,您仍然可以使用WebDriver方法来定位元素。

// 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。

2020-05-01