繁体   English   中英

Selenium WebDriver "Click" 和 JavascriptExecutor Click 有什么区别

[英]What is the difference between Selenium WebDriver "Click" and JavascriptExecutor Click

以下两个语句的执行过程差异。

  1. driver.findElement(By.xpath("//input[@value='Save']")).click();
  2. ((JavascriptExecutor) driver).executeScript("arguments[0].click();", element);

WebDriver click()模拟真实用户与 UI 的交互。 I 将通过向浏览器发送本机事件来执行(在大多数浏览器中),并且必须可见才能单击它。 文档

...如果 click() 是通过发送本机事件来完成的(这是大多数浏览器/平台上的默认值)

单击元素有一些先决条件。 元素必须是可见的,并且它的高度和宽度必须大于 0。

另一方面, JavaScript click()

在当前选定的框架或窗口的上下文中执行 JavaScript。

无论WebElement是否可见。 这种方法忽略了Selenium试图模拟的用户交互的想法。

简单来说。 Webdriver 使用原生浏览器事件来点击元素,而 javascript 使用 JavaScrip 来点击元素。

如果我没记错的话,Selenium 1 的所有操作都使用 JavaScript,但他们在 webdriver(Selenium 2)中更改了这一点,现在他们使用本机浏览器事件与浏览器交互。 为此,您需要浏览器(geckodriver、IEDriver、Chromedriver 等)的相应支持。 另一方面,所有主要浏览器都内置了 JavaScript 引擎,因此您不需要这些额外的可执行文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM