Selenium webdriver Selenium Webdriver在双击操作时返回StaleElementReferenceError

Selenium webdriver Selenium Webdriver在双击操作时返回StaleElementReferenceError,selenium-webdriver,protractor,cucumberjs,Selenium Webdriver,Protractor,Cucumberjs,我正在使用量角器Cumber框架进行e2e测试,就在最近,我的双击方法停止了工作,并且从那以后一直返回StaleElementReferenceError 因此,我的代码如下: generic.tableRows().each((element) => { element.all(by.tagName('td')).each((tdElement) => { tdElement.getText().then((rowCellText) => { if

我正在使用量角器Cumber框架进行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:stale元素引用:元素未附加到页面文档

但当我这样做的时候:

tdElement.click();
元素被找到并单击。不会返回任何错误

我尝试过的事情:

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

--

--及


对此问题的任何帮助或见解都将不胜感激。

过时元素错误通常指dom中发生的更改,这意味着元素已移动或类似的情况。如果执行单击,然后再次找到所有元素并再次单击,是否有效?

我已经解决了问题

问题是,外部“each”函数即使在执行双击操作(将浏览器重定向到另一个页面)后仍保持不变,并且该函数仍在查找导致StaleElementReferenceError的元素,因为该元素现在不存在于重定向浏览器的页面上


解决方法是简单地使用函数而不是“each”函数。

最后,您尝试了两次单击同一元素。这对你不起作用?@BharathKumarS它不起作用,不幸的是,当
tdElement.click()
工作完美时,你为什么要强制
doubleClick(tdElement)
?你的用例是什么?用相关的信息更新问题HTML@DebanjanB谢谢你的回复。双击表中的td元素会将我重定向到双击的项目的特定页面。我的html基本上就是一个由restapi填充数据的表。我需要双击而不是只单击一次。是的,我需要。我已经解决了这个问题,不过谢谢你的回复!
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();