Selenium WebElement.click() vs. Javascript点击事件

Selenium WebElement.click() vs. Javascript click event

本文关键字:Javascript 事件 vs WebElement click Selenium      更新时间:2023-09-26

我想知道调用WebElement的click()方法与通过id查找元素并使用JavaScript触发click事件之间的差异。

只是为了明确在第一个方法中,我调用WebElement实例的.click():

myWebElement.click();

第二个技巧是:

((JavascriptExecutor)driver).executeScript("document.getElementById('myElementID').click()");

我很想知道这两种点击web元素的技术之间的所有区别,以及每种技术的优缺点。

Webdriver利用浏览器的原生支持,通过id/xpath等方式将DOM元素映射到WebElement对象。

JavascriptExecutor.executeScript在当前选择的浏览器窗口的上下文中执行外部脚本。(类似于一个增强的浏览工具,如grease monkey,如果你曾经使用过),和,如果脚本返回任何DOM元素,它被转换成WebElement对象

也可以说,WebDriver在浏览器上模拟的点击与使用javascript调用的点击相比,类似于实际用户的操作。

实际上,WebDriver并不是所有的事件都可以在所有的浏览器上完美地自动化,事实上,在同一浏览器的不同版本上也是如此。(即不同版本的IE, FF等行为不同)。仍然WebDriver是最好的工具可用于此。

有一次(大约4年前)在某个版本的IE上,我们发现我们不能在生成的菜单链接上发送右键或鼠标悬停,所以我们使用js来模拟,它以非常独立于浏览器的方式执行。因此,您现在可以得出执行外部javascript的好处。

此外,还有一些自动化的web测试框架,它们使用javascript来代替浏览器的本地支持。例如:http://en.wikipedia.org/wiki/Sahi_%28software%29

裁判:

  • http://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/JavascriptExecutor.html executeScript 28以%,% 20 java . lang . object…% 29日
  • http://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/WebDriver.html findElement % 28 org.openqa.selenium.by % 29日

这类测试是E2E(端到端)而不是BDD

第一个-现在执行,采取下一步行动,你必须写一些函数将延迟执行,例如从服务器下载新的数据。

第二个代码返回promise - http://selenium.googlecode.com/git/docs/api/javascript/class_webdriver_WebElement.html - "调度一个命令来单击此元素。-你可以使用然后回调来运行下一个动作。