【发布时间】:2017-04-13 13:09:34
【问题描述】:
以下两个语句的执行过程区别。
driver.findElement(By.xpath("//input[@value='Save']")).click();((JavascriptExecutor) driver).executeScript("arguments[0].click();", element);
【问题讨论】:
标签: java selenium selenium-webdriver
以下两个语句的执行过程区别。
driver.findElement(By.xpath("//input[@value='Save']")).click();((JavascriptExecutor) driver).executeScript("arguments[0].click();", element);【问题讨论】:
标签: java selenium selenium-webdriver
WebDriver click() 模拟真实用户与 UI 的交互。我将通过向浏览器发送本机事件来执行(在大多数浏览器中),并且它必须可见才能单击它。来自docs
...如果 click() 是通过发送原生事件(即 大多数浏览器/平台上的默认设置)
点击元素有一些先决条件。元素 必须是可见的,并且高度和宽度必须大于 0。
另一方面,JavaScriptclick()
在当前选定框架的上下文中执行 JavaScript 或 窗口。
无论WebElement 是否可见。这种方法错过了Selenium试图模拟用户交互的想法。
【讨论】:
简单来说。 Webdriver 使用 native 浏览器事件来点击元素,而 javascript 使用 JavaScrip 来点击元素。
如果我没记错 Selenium 1,它的所有操作都使用 JavaScript,但他们在 webdriver (Selenium 2) 中改变了这一点,现在他们使用本机浏览器事件与浏览器交互。因此,您需要浏览器的相应支持(geckodriver、IEDriver、Chromedriver 等)。另一方面,JavaScript 引擎内置在所有主要浏览器中,因此您不需要这些额外的可执行文件。
【讨论】: