【问题标题】:How can I perform a double click on an element with Protractor?如何使用量角器双击元素?
【发布时间】:2014-09-17 15:17:51
【问题描述】:

我想双击一个元素,但在文档 API 中找不到执行此操作的方法。我发现了一些可以追溯到 2013 年的参考资料,但我知道情况发生了很大变化。

谁能帮助并告诉我如何执行双击。

谢谢

【问题讨论】:

  • 您能分享不接受答案的原因吗?有什么可以改进的吗?谢谢。

标签: javascript angularjs testing protractor


【解决方案1】:

永远记住protractorwebdriverjs 的包装器。

doubleClick()browser.actions() 中可用:

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

【讨论】:

  • 量角器是selenium-webdriver 的包装器。 WebdriverIO 是一个完全不同的项目,它的功能基本相同,但方式不同(它是基于回调的链接)。
  • @ChristianB 我的错,你是对的。谢谢你。我已经确定了答案。
【解决方案2】:

对于任何在 2019 年查看此内容的人来说,这仍然有效。只知道量角器选择器使用 Locator 对象来查找元素。上述解决方案使用 webElement 对象。因此,如果您使用 Protractor 查找元素,则需要执行 browser.actions().doubleClick(myElement.getWebElement()).perform();

之类的操作

【讨论】:

    【解决方案3】:
    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(){...});
    

    【讨论】:

      【解决方案4】:
      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());
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-11
        相关资源
        最近更新 更多