我正在尝试检查页面上的所有链接。关于此主题已经提出了一些问题,但是由于某些原因,当我尝试时没有任何问题。我遇到的一个特殊问题是,在转到页面并将所有链接放入列表变量之后,在遍历它们时,错误消息显示该链接是陈旧的引用。这是代码段:
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,它不在当前框架上下文中,要么文档已刷新”
我该怎么做才能更正此错误,以便可以检查页面上的每个链接?
答案 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();
}