Javascript 双击x y坐标WebdriverIO

Javascript 双击x y坐标WebdriverIO,javascript,double-click,e2e-testing,webdriver-io,spectron,Javascript,Double Click,E2e Testing,Webdriver Io,Spectron,WebdriverIO提供了一个命令。与其他一些命令(如leftClick())不同,doubleClick()没有任何x-y参数。我无法双击某个特定组件上的特定x y位置。我之所以这样做,是因为应该在双击的确切位置插入子元素 我使用了moveToObject()首先将光标移动到特定位置,但是双击不会拾取该信息。它总是双击零部件的中心 此外,没有类似“elementIdDoubleClick”的命令。而且,行动尚未实施 有人知道如何双击组件内的特定x y坐标吗?您可以使用doDoubleClic

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

我使用了
moveToObject()
首先将光标移动到特定位置,但是
双击
不会拾取该信息。它总是双击零部件的中心

此外,没有类似“elementIdDoubleClick”的命令。而且,行动尚未实施


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

您可以使用
doDoubleClick()首先移动到元素,然后使用doDoubleClick()

但请确保不推荐使用moveToObject()和doDoubleClick()

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

并确保使用
webdriverOptions:({deprecationWarnings:false})
在你的应用程序启动配置中将这些警告静音。

dododoubleclick()
对我来说在Chrome上似乎不起作用,我不知道为什么。我知道乔梅德河是。完成后,您将能够:

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!");
  }
}
函数双击(someElement,x,y){
设尝试=0;
让时间双击;
做{
browser.moveToObject(someElement,x,y);
让startTime=Date.now();
浏览器。按钮按(0)。按钮按(0);
timeToDoubleClick=Date.now()-startTime;
log(“双击时间:+timeToDoubleClick”);
如果(时间双击>500){
log(“等待10秒以允许CPU呼吸/检查选项卡是否已打开…”);
浏览器暂停(10000);
//在我的情况下,我期待一个新的标签打开
if(browser.getTabIds().length>1){
//标签打开了!
timeToDoubleClick=0;
}
}
}while(timeToDoubleClick>500&&trument++5){
抛出新错误(“无法双击!”);
}
}

只是一个随机猜测;调用
leftClick()
两次会发生什么?很好的开箱思考@ChrisG!我做了一点尝试,但没有成功,但我会再做一些尝试,如果成功的话,我会向大家汇报
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!");
  }
}