以下两个陈述之间的执行过程差异。
driver.findElement(By.xpath("//input[@value='Save']")).click();
((JavascriptExecutor) driver).executeScript("arguments[0].click();", element);
答案 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引擎内置于所有主流浏览器中,因此您不需要这些额外的可执行文件。