Selenium WebElement.click() vs. Javascript点击事件
Selenium WebElement.click() vs. Javascript click event
我想知道调用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 - "调度一个命令来单击此元素。-你可以使用然后回调来运行下一个动作。
- 如何将javascript事件从web浏览器wpf控件发送到wpf的c#代码
- 在同一个javascript事件处理程序中调用不同的函数
- Javascript事件;在新选项卡中打开”;
- 存在每个时间元素的javascript事件
- Javascript事件.锚的目标问题
- 带有参数的Javascript事件处理程序
- 如何从另一个处理程序内部取消JavaScript事件处理程序函数的执行
- firefox中的Javascript事件范围问题
- Firefox中的JavaScript事件参数
- 在动态加载的PHP表单上放置JavaScript事件
- 如何在Javascript事件上从JSNI设置GWTClass字段
- Javascript事件发射器一次处理多个事件
- 在下拉式javascript事件监听器中选择时触发事件
- 在javascript中导入xlsx文件时,如何手动强制javascript事件
- 显示触发的JavaScript事件
- 正在取消IE11中的JavaScript事件
- 页面卸载期间的JavaScript事件循环
- 存在其他参数时访问Javascript事件
- 阻止Javascript事件影响子元素
- 如何在事件处理程序中获取 javascript 事件对象