Selenium-Webdriver возвращает StaleElementReferenceError при действии doubleClick - PullRequest
0 голосов
/ 24 декабря 2018

Я использую protractor-cucumber-framework для тестирования e2e, и совсем недавно мой метод двойного щелчка перестал работать и с тех пор возвращает StaleElementReferenceError.

Поэтому мой код выглядит следующим образом:

 generic.tableRows().each((element) => {
  element.all(by.tagName('td')).each((tdElement) => {
    tdElement.getText().then((rowCellText) => {
      if (rowCellText === identifier) {
        browser.actions().doubleClick(tdElement).perform();
      }
    });
  });
});

Двойной щелчок возвращает

StaleElementReferenceError: ссылка на устаревший элемент: элемент не прикреплен к документу страницы

Но когда я это сделаю:

tdElement.click();

Элемент найден и нажат.Ошибки не возвращаются.

Вещи, которые я пытался:

browser.wait(EC.presenceOf(tdElement), 10000).then(() => {
    browser.actions().doubleClick(tdElement).perform();
 });

-

browser.actions().mouseDown(tdElement).mouseUp().perform();
browser.sleep(1000); // Tried even without a hard wait
browser.actions().click(tdElement).perform();

-

tdElement.click().then(() => {
  browser.sleep(800); // Tried even without a hard wait
  tdElement.click();
});

browser.actions().click(tdElement).click(tdElement).perform();

Любая помощь или понимание этого вопроса будет принята с благодарностью.

Ответы [ 2 ]

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

Я решил проблему!

Проблема заключалась в том, что внешняя функция 'each' все еще сохранялась даже после выполнения действия двойного щелчка, которое перенаправляло браузер на другую страницу, и функция все еще искалаэлементы, которые привели к StaleElementReferenceError, потому что элемент теперь не существует на странице, где был перенаправлен браузер.

Решением было просто использовать функцию 'filter' вместоФункция «каждый».

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

Ошибка устаревшего элемента обычно означает изменение в dom, означающее, что элемент перемещен или что-то в этом роде.Работает ли это, если вы выполняете щелчок, а затем снова находите все элементы и снова щелкаете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...