【问题标题】:Double click x y co-ordinates WebdriverIO双击 x y 坐标 WebdriverIO
【发布时间】:2018-06-10 22:29:27
【问题描述】:

WebdriverIO 提供doubleClick() 命令。与其他一些命令不同,例如leftClick()doubleClick() 没有任何 x y 参数。我无法双击某个特定组件上的特定 x y 位置。我想这样做是因为应该在确切的双击位置插入一个子元素。

我使用moveToObject() 首先将光标移动到特定位置,但doubleClick 没有选择它。它总是双击组件的中心。

也没有像“elementIdDoubleClick”这样的命令。而且,行动尚未实施。

有人知道如何双击组件内的特定 x y 坐标吗?

【问题讨论】:

  • 只是随机猜测;两次拨打leftClick() 会发生什么?
  • 开箱即用的想法@ChrisG 很好!我尝试了一下,但它没有成功,但我会再搞砸一些,如果它有效,我会报告

标签: javascript double-click e2e-testing webdriver-io spectron


【解决方案1】:

你可以使用doDoubleClick();先移动到你的元素,然后使用doDoubleClick();

return this.app.client.moveToObject(element,5,5).doDoubleClick();

但请确保 moveToObject() 和 doDoubleClick() 已弃用。

WDIO 不会在不发布替代 api 的情况下删除它们。

并确保您使用webdriverOptions: ({deprecationWarnings : false}) 在您的应用启动配置中以静默这些警告。

【讨论】:

    【解决方案2】:

    doDoubleClick() 似乎不适用于我的 Chrome,我不知道为什么。我看到 ChomeDriver 是implementing actions as I write this。完成后,您将能够:

    browser.moveToObject(someElement, x, y);
    browser.actions().mouseDown().mouseUp().mouseDown().mouseUp().perform();
    

    但是现在,当我使用 ChromeDriver 2.45 执行此操作时,我得到:

    Error: unimplemented command: session/c4dae3dead96649fc7c26f75709257da/actions
    

    因此,如果您不在遥远的未来,这对我有用:

    function doubleClick(someElement, x, y) {
      let attempt = 0;
      let timeToDoubleClick;
      do {
        browser.moveToObject(someElement, x, y);
        let startTime = Date.now();
        browser.buttonPress(0).buttonPress(0);
        timeToDoubleClick = Date.now() - startTime;
        console.log("Time to double click: " + timeToDoubleClick);
    
        if (timeToDoubleClick > 500)  {
          console.log("Waiting 10 seconds to allow the CPU to breath / check to see if a tab has opened...");
          browser.pause(10000);
    
          // In my case I'm expecting a new tab to open
          if(browser.getTabIds().length > 1) {
            // The tab opened!
            timeToDoubleClick = 0;
          }
        }
      } while(timeToDoubleClick > 500 && attempt++ <= 5);
    
      if(attempt > 5) {
        throw new Error("Could not manage to double click!");
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-17
      • 1970-01-01
      • 2016-06-28
      • 2013-05-05
      • 2022-01-16
      • 1970-01-01
      • 2011-03-08
      相关资源
      最近更新 更多