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

时间:2014-07-04 09:29:15

标签: java javascript selenium selenium-webdriver

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

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

myWebElement.click();

第二种技术是:

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

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

2 个答案:

答案 0 :(得分:9)

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

JavascriptExecutor.executeScript在当前所选浏览器窗口的上下文中执行外部脚本。 (类似于增强浏览工具,如油脂猴,如果您曾经使用过), 和如果脚本返回任何转换为​​WebElement对象的DOM元素。

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

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

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

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

价:

答案 1 :(得分:1)

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

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

第二个代码返回promise - http://selenium.googlecode.com/git/docs/api/javascript/class_webdriver_WebElement.html - “安排命令点击此元素。” - 您可以使用然后回调来运行下一个操作。