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

新手上路,请多包涵

我有以下 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();

我想使用带有 WebDriver 的 JavaScript 来单击按钮。我该怎么做?

原文由 Ripon Al Wasim 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 618
2 个回答

通过 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);

您还应注意,最好使用 WebElement 接口的 click() 方法,但在实例化驱动程序之前 禁用本机事件。这将实现相同的目标(具有相同的潜在限制),但不会强迫您编写和维护自己的 JavaScript。

原文由 JimEvans 发布,翻译遵循 CC BY-SA 4.0 许可协议

下面是使用 JavaScript 单击 WebDriver 中的按钮的代码:

 WebDriver driver = new FirefoxDriver();
JavascriptExecutor jse = (JavascriptExecutor)driver;
jse.executeScript("document.getElementById('gbqfb').click();");

原文由 Ripon Al Wasim 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题