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

clo*_*her 9 javascript java selenium selenium-webdriver

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

为了清楚第一种方法,我称之为WebElement.click()的一个实例:

myWebElement.click();
Run Code Online (Sandbox Code Playgroud)

第二种技术是:

((JavascriptExecutor)driver).executeScript("document.getElementById('myElementID').click()");
Run Code Online (Sandbox Code Playgroud)

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

Sha*_*016 10

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

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

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

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

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

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

参考: