我正在使用量角器-黄瓜框架进行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();
对于此问题的任何帮助或见解,将不胜感激。
答案 0 :(得分:1)
我已经解决了问题!
问题在于,即使执行了双击操作(将浏览器重定向到另一个页面),外部的“每个”函数仍然仍然存在,并且该函数仍在寻找导致StaleElementReferenceError的元素,因为该元素现在没有重定向浏览器的页面上不存在。
解决方案是只使用'filter'函数而不是'each'函数。
答案 1 :(得分:0)
陈旧的元素错误通常是指dom发生的变化,这意味着元素已移动或类似的情况。如果您先单击然后再次查找所有元素并再次单击,是否可以正常工作?