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

问题描述 投票:0回答:2

Html code for this questionI已经收集了我想要的所有链接的计数(使用'then'而不是每个)但是当我尝试点击它们时我得到“失败:陈旧元素引用:元素未附加到页面文档” 。这是我的代码:

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

这适用于其他一些堆栈溢出的人,但我试图做同样的事情并抛出错误。请有人帮我这个吗?

typescript protractor
2个回答
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()
    }
  })
}

0
投票

links=element.all(by.css('div>h3>a'));

由于错误,很明显问题出在定位器上

© www.soinside.com 2019 - 2024. All rights reserved.