我想知道调用WebElement的click()方法与通过id查找元素并使用JavaScript 触发事件之间有什么区别。click
click()
click
为了清楚起见,在第一种方法中,我调用了WebElement.click()实例:
.click()
myWebElement.click();
第二种技术是:
((JavascriptExecutor)driver).executeScript("document.getElementById('myElementID').click()");
我有兴趣了解这两种单击Web元素的技术之间的所有差异,以及每种技术的优缺点。
Webdriver 利用浏览器的本机支持,使用id / xpath等将DOM元素映射到WebElement对象。
该JavascriptExecutor.executeScript执行的 外部 在当前选择的浏览器窗口的上下文脚本。(如果您曾经使用过,则类似于 油脂 浏览器之类的增强浏览工具),并且 在脚本返回任何DOM元素(如果已将其转换为WebElement对象)的情况下。
JavascriptExecutor.executeScript
可以说,与使用javascript调用相比,WebDriver在浏览器上模拟的点击与实际用户的点击类似。
实际上,使用WebDriver,并非所有事件都可以使用所有Web浏览器完美地自动化,实际上,也可以使用同一Web浏览器的不同版本来实现。(即,不同版本的IE,FF等具有不同的行为)。 WebDriver 仍然 是 为此提供的 最佳工具 。
在某个版本的IE上(大约4年前),我们观察到我们无法在生成的菜单链接上发送右键单击或将鼠标悬停在上面,因此我们使用js进行了模拟,这与浏览器非常独立。因此,您现在可以得出结论,执行外部javascript有什么用处。
此外,还有一些自动化的Web测试框架,这些框架对所有内容均使用javascript,而不是浏览器的本机支持。例如:http : //en.wikipedia.org/wiki/Sahi_%28software%29
参考: