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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用量角器导航到网页上的每个链接相关的知识,希望对你有一定的参考价值。

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

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

答案

单击链接进入另一个页面,即使您导航回来,但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()
    }
  })
}
另一答案

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

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

以上是关于如何使用量角器导航到网页上的每个链接的主要内容,如果未能解决你的问题,请参考以下文章

使用片段上的按钮更改片段

如何使用多个 NavHost 片段创建深层链接

导航上的片段生命周期重叠

如何使用 HTML 链接导航到 Flash 影片中的帧?

从一个片段移动到另一个片段时如何自动选择底部导航?

条件片段和导航重用