Selenium C#-如何检查所有链接

时间:2018-08-01 17:50:07

标签: c# selenium-webdriver

我正在尝试检查页面上的所有链接。关于此主题已经提出了一些问题,但是由于某些原因,当我尝试时没有任何问题。我遇到的一个特殊问题是,在转到页面并将所有链接放入列表变量之后,在遍历它们时,错误消息显示该链接是陈旧的引用。这是代码段:

var driver = new FirefoxDriver();
driver.Navigate().GoToUrl(URLPROD);
driver.Manage().Window.Maximize();

ICollection<IWebElement> links = driver.FindElements(By.TagName("a"));

foreach (var link in links)
{
   if (!(link.Text.Contains("Email")) || !(link.Text == "") || !(link.Text == null) || !(link.Text.Contains("Element")))
   {
      ((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].scrollIntoView(true);", link);
      Console.WriteLine(link);
      driver.ExecuteScript("arguments[0].click();", link);

      driver.Navigate().Back();

    }

}

错误消息:OpenQA.Selenium.StaleElementReferenceException:'的元素引用是陈旧的;要么该元素不再附加到DOM,它不在当前框架上下文中,要么文档已刷新”

我该怎么做才能更正此错误,以便可以检查页面上的每个链接?

1 个答案:

答案 0 :(得分:1)

您可以重新找到链接。 因此1.获得链接数2.循环该数字以使链接每次刷新(以避免过时的错误)。

        var links = driver.FindElements(By.TagName("a"));

        for (int i=0; i < links.Count(); i++)
        {
            var newLinks = driver.FindElements(By.TagName("a"));
            newLinks[i].Click();
            driver.Navigate().Back();
        }