![](/img/trans.png)
[英]Selenium WebDriver(Java) : JavascriptExecutor fails to click element, while WebElement.click() works well
[英]What is the difference between Selenium WebDriver "Click" and JavascriptExecutor Click
以下两个语句的执行过程差异。
driver.findElement(By.xpath("//input[@value='Save']")).click();
((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.