Двойной щелчок по координатам xy WebdriverIO - PullRequest
0 голосов
/ 11 июня 2018

WebdriverIO предоставляет команду doubleClick().В отличие от некоторых других команд, таких как leftClick(), doubleClick() не имеет параметров xy.Я не могу дважды щелкнуть по определенной позиции xy на одном конкретном компоненте.Я хотел бы сделать это, потому что дочерний элемент должен быть вставлен в точное место двойного щелчка.

Я использовал moveToObject(), чтобы сначала переместить курсор в определенное место, но doubleClick не поднимает это,Он всегда дважды щелкает центр компонента.

Также нет такой команды, как 'elementIdDoubleClick`.И действия еще не были реализованы.

Кто-нибудь знает, как я могу дважды щелкнуть по конкретным координатам XY в компоненте?

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

doDoubleClick(), кажется, не работает на Chrome для меня, и я не уверен, почему.Я вижу, что ChomeDriver реализует действия, когда я пишу это .Как только это будет сделано, вы сможете сделать:

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!");
  }
}
0 голосов
/ 06 июля 2018

Вы можете использовать doDoubleClick(); для первого перехода к вашему элементу, а затем использовать doDoubleClick ();

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

Но убедитесь, что moveToObject () и doDoubleClick () устарели.

WDIO не удалит их, не выпустив альтернативный API.

И убедитесь, что вы используете webdriverOptions: ({deprecationWarnings : false}) в конфигурации запуска приложения, чтобы отключить эти предупреждения.

...