Selenium WebElement.click()与Javascript单击事件
我想知道调用的Selenium WebElement.click()与Javascript单击事件,java,javascript,selenium,selenium-webdriver,Java,Javascript,Selenium,Selenium Webdriver,我想知道调用的click()方法与通过id查找元素并使用JavaScript触发click事件之间有什么区别 在第一个方法中,我调用了一个实例的。click(): 第二种技术是: ((JavascriptExecutor)driver).executeScript("document.getElementById('myElementID').click()"); 我有兴趣了解这两种单击web元素的技术之间的所有差异,以及它们各自的优缺点。这些测试是E2E(端到端)而不是BDD 第一个–现在执
click()
方法与通过id查找元素并使用JavaScript触发click
事件之间有什么区别
在第一个方法中,我调用了一个实例的。click()
:
第二种技术是:
((JavascriptExecutor)driver).executeScript("document.getElementById('myElementID').click()");
我有兴趣了解这两种单击web元素的技术之间的所有差异,以及它们各自的优缺点。这些测试是E2E(端到端)而不是BDD 第一个–现在执行,要执行下一个操作,您必须编写一些函数来延迟执行,例如从服务器下载新数据
第二个代码返回
promise
––计划一个命令来单击此元素。-您可以使用然后回调来运行下一个操作。Webdriver利用浏览器的本机支持,使用id/xpath等将DOM元素映射到WebElement对象
JavascriptExecutor.executeScript
在当前所选浏览器窗口的上下文中执行一个外部脚本。(类似于增强型浏览工具,如油脂猴,如果您曾经使用过的话),
如果脚本返回任何DOM元素并将其转换为WebElement对象,则返回。
也可以说,WebDriver在浏览器上模拟的点击与实际用户使用javascript调用的点击相似
事实上,使用WebDriver并不是所有的事件都可以在所有的web浏览器上完美地自动化,事实上,在同一个web浏览器的不同版本上也是如此。(即不同版本的IE、FF等表现不同)。仍然WebDriver是这方面近乎最佳的工具
有一次(大约4年前)在IE的某个版本上,我们观察到我们不能发送右键单击,或者可能在生成的菜单链接上悬停鼠标,所以我们使用js来模拟这一点,它以非常独立于浏览器的方式执行。因此,您现在可以得出结论,执行外部javascript有什么好处
此外,还有一些自动化的web测试框架,它们使用javascript进行一切测试,而不是浏览器的本机支持。e、 g:
参考:
tools->webdevelopers->Scratchpad
。这将打开一个小的草稿行窗口。将脚本复制到它document.getElementById('myElementID')。单击()。然后单击Run
按钮,然后自己检查发生了什么情况。:)事实上,我可以在chrome和firefox的开发者工具->控制台上实现这一点,是的,你是对的!
((JavascriptExecutor)driver).executeScript("document.getElementById('myElementID').click()");