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

我想知道调用WebElement的click()方法与通过id查找元素和使用JavaScript触发click事件之间的区别是什么。

为了清楚第一种方法,我调用WebElement实例的.click .click()

 myWebElement.click(); 

第二种技术是:

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

我很想知道这两种点击网络元素的技术之间的差异,以及每种技术的优缺点。

Webdriver利用浏览器的本机支持,使用id / xpath等将DOM元素映射到WebElement对象。

JavascriptExecutor.executeScript在当前选定的浏览器窗口的上下文中执行外部脚本。 (类似于像猴子一样的增强浏览工具,如果你曾经使用过),并且如果脚本返回任何DOM元素,它将转换为WebElement对象。

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

实际上,使用WebDriver并非所有事件都可以通过所有Web浏览器完美自动化,实际上也可以使用同一Web浏览器的不同版本。 (即不同版本的IE,FF等表现不同)。 WebDriver仍然是最好的工具

在某个版本的IE上,我们观察到一次(大约4年后),我们发现我们无法发送右键单击或者可能将鼠标hover在生成的菜单链接上,因此我们使用js来模拟它,它执行了非常多的浏览器独立方式。 所以你现在可以得出结论执行外部JavaScript有什么用处。

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

参考:

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

第一个 – 现在执行,要执行下一个操作,您必须编写一些函数来延迟执行,例如从服务器下载新数据。

第二个代码返回promisehttp://selenium.googlecode.com/git/docs/api/javascript/class_webdriver_WebElement.html – “安排命令单击此元素。” – 您可以使用then callback来运行下一个操作。