【发布时间】:2014-09-17 15:17:51
【问题描述】:
我想双击一个元素,但在文档 API 中找不到执行此操作的方法。我发现了一些可以追溯到 2013 年的参考资料,但我知道情况发生了很大变化。
谁能帮助并告诉我如何执行双击。
谢谢
【问题讨论】:
-
您能分享不接受答案的原因吗?有什么可以改进的吗?谢谢。
标签: javascript angularjs testing protractor
我想双击一个元素,但在文档 API 中找不到执行此操作的方法。我发现了一些可以追溯到 2013 年的参考资料,但我知道情况发生了很大变化。
谁能帮助并告诉我如何执行双击。
谢谢
【问题讨论】:
标签: javascript angularjs testing protractor
永远记住protractor 是webdriverjs 的包装器。
doubleClick() 在browser.actions() 中可用:
browser.actions().doubleClick(element(by.id('mybutton'))).perform();
【讨论】:
selenium-webdriver 的包装器。 WebdriverIO 是一个完全不同的项目,它的功能基本相同,但方式不同(它是基于回调的链接)。
对于任何在 2019 年查看此内容的人来说,这仍然有效。只知道量角器选择器使用 Locator 对象来查找元素。上述解决方案使用 webElement 对象。因此,如果您使用 Protractor 查找元素,则需要执行 browser.actions().doubleClick(myElement.getWebElement()).perform();
【讨论】:
var el=element(by.id('id'));
browser.executeAsyncScript(function() {
var evt=new MouseEvent('dblclick', {bubbles: true,cancelable: true,view: window});
var callback = arguments[arguments.length - 1];
arguments[0].addEventListener('dblclick',callback);
arguments[0].dispatchEvent(evt);
},el).then(function(){...});
【讨论】:
await browser.actions().mouseMove(Element).doubleClick().perform();
await browser.actions().doubleClick(Element.getWebElement()).perform();
以上 2 个代码在屏幕上可见时可以正常双击任何元素。 这里元素是
"let Element = element(by.xpath("locator"));"
下面的代码不起作用,因为显示了一条消息
“失败:JavaScript 错误:arguments[0].dblclick 不是函数”
而在控制台中检查时,类似的脚本确实可以双击该项目:"$($x(element(by.xpath("locator")))).dblclick()".
如果能够找到确切的 JavaScript 语法以使以下代码运行,将更新我的评论。
await browser.executeScript("arguments[0].dblclick();",
Element.getWebElement());
【讨论】: