Html code for this question我已经收集了所有想要的链接数(使用“ then”,而没有每个链接),但是当我尝试单击每个链接时,我得到“失败:陈旧元素引用:element未附加到页面文档中”。这是我的代码:
verifylinks() {
var alllinks = element(by.css('div.unity'))
var links = alllinks.all(by.tagname("a"));
number.each(function (items){
items.click();
//I will be validating something here
browser.navigate().back;
}
}
这对于其他一些在堆栈溢出时起作用的人,但是我试图做同样的事情,并且抛出了错误。有人可以帮我吗?
答案 0 :(得分:0)
单击链接将进入另一个页面,即使您向后导航,但Selenium会将返回页面视为一个新页面,该页面与找到所有链接的页面不同。
因此,当单击从新页面上的旧页面找到的下一个链接时,Selenium检测到该链接不是来自新页面,并引发stale element reference
异常。
要解决此问题,您需要在新页面上再次找到链接。
verifylinks() {
var alllinks = element.all(by.css('div.unity a'));
browser.sleep(15000); // just for debug purpose to wait page loading.
alllinks.count().then(function(length) {
console.log('link amount: ' + length);
for(let i=0;i<length;i++) {
alllinks.get(i).click();
// validate something here
browser.navigate().back();
browser.sleep(5000);
// sleep for short time to wait page load for debug purpose,
// recommend change to browser.wait()
}
})
}
答案 1 :(得分:0)
links=element.all(by.css('div>h3>a'));
出现错误后,很明显问题出在定位器上