简体   繁体   English

如何使用量角器双击元素?

[英]How can I perform a double click on an element with Protractor?

I would like to double click on an element but I could not find a way to do this in the document API.我想双击一个元素,但在文档 API 中找不到执行此操作的方法。 I found some references dating back to 2013 but I know things have changed a lot.我找到了一些可追溯到 2013 年的参考资料,但我知道事情已经发生了很大变化。

Can someone help and tell me how I can perform a double click.有人可以帮助并告诉我如何执行双击。

Thanks谢谢

Always remember that protractor is a wrapper around webdriverjs .永远记住, protractorwebdriverjs的包装器。

doubleClick() is available in browser.actions() : doubleClick()browser.actions()可用:

browser.actions().doubleClick(element(by.id('mybutton'))).perform();

For anyone looking at this in 2019, this still works.对于在 2019 年看到这个的人来说,这仍然有效。 Just know thatProtractor selectors use the Locator object to find elements.只知道Protractor 选择器使用Locator 对象来查找元素。 The above solution uses the webElement object.上面的解决方案使用了 webElement 对象。 So if you're using Protractor to find your element, you'll need to do something like browser.actions().doubleClick(myElement.getWebElement()).perform();因此,如果您使用 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();

the above 2 codes works properly to double click on any element when it's visible on screen.当任何元素在屏幕上可见时,上面的 2 个代码可以正常工作以双击任何元素。 Here Element is这里元素是

"let Element = element(by.xpath("locator"));"

Below code did not works as a msg is shown saying下面的代码不起作用,因为 msg 显示说

"Failed: JavaScript error: arguments[0].dblclick is not a function" “失败:JavaScript 错误:arguments[0].dblclick 不是函数”

whereas when checked in console similar scripts did worked to double click the item: "$($x(element(by.xpath("locator")))).dblclick()".而在控制台中检查时,类似的脚本确实可以双击该项目: "$($x(element(by.xpath("locator")))).dblclick()".

Will update my comment if able to find the exact JavaScript syntax to make below code run.如果能够找到使以下代码运行的确切 JavaScript 语法,将更新我的评论。

await browser.executeScript("arguments[0].dblclick();", 

Element.getWebElement());

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM