Selenium WebDriver“Click”和JavascriptExecutor Click之间有什么区别

时间:2017-04-13 13:09:35

标签: selenium selenium-webdriver

以下两个陈述之间的执行过程差异。

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

2 个答案:

答案 0 :(得分:2)

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

  

...如果click()是通过发送本机事件(即   默认在大多数浏览器/平台上)

     

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

另一方面,

JavaScript click()

  

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

无论WebElement是否可见。这种方法错过了用户交互Selenium尝试模拟的想法。

答案 1 :(得分:0)

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

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