如何使用量角器导航到网页上的每个链接

时间:2019-04-10 00:03:51

标签: typescript protractor

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;
    }
}

这对于其他一些在堆栈溢出时起作用的人,但是我试图做同样的事情,并且抛出了错误。有人可以帮我吗?

2 个答案:

答案 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'));

出现错误后,很明显问题出在定位器上