我试图从JSP页面获取一些数据,该页面有一个带有分页的表,我试图从每个表页面获取值。
正如我可以看到每个元素都是动态创建的,带有服务器设置的类和名称以及时间戳和其他东西,所以我必须在DOM上使用尽可能多的通用数据来获取它们。
点击第一页后,页面会生成第二个分页器,这将是真正的分页器。
问题是我从分页器处理了3个页面后,我得到了以下错误:
'陈旧元素引用:元素未附加到页面文档(会话信息:chrome=89.0.4389.114)'
但实际上DOM元素存在于页面上,但它是用其他名称和类重新创建的,但无论如何它都应该是get。。。
这是我的代码:
var pages = searchResult.FindElements(By.ClassName("custom-pagination"));
foreach (var page in pages[0].FindElements(By.TagName("input")))
{
var PageValue = page.GetAttribute("value");
if (PageValue == "<<") continue;
if (PageValue == ">") break;
if (PageValue != "1")
{
page.Click();
WaitUntilElementNotVisible(SelectorByAttributeValue("iawaitpanel", "true"), 30000, driver);
}
foreach (var azienda in driver.FindElements(By.ClassName("item_list")))
{
DataRow row = table.NewRow();
row["REGIONE"] = NomiRegioni[IndexRegione];
row["NOME AZIENDA"] = azienda.FindElement(By.ClassName("txtGreen")).Text;
var indirizzo = azienda.FindElement(By.ClassName("sede")).Text.Replace("Sede Legale", "").Trim();
row["INDIRIZZO"] = indirizzo;
row["CAP"] = indirizzo;
row["CITTA"] = indirizzo;
row["MAPS"] = azienda.FindElement(SelectorByAttributeValue("title", "Vai a Google Maps")).GetAttribute("href");
table.Rows.Add(row);
}
}
这是页面外观的一小部分...
我已经读过这个问题,我还试着在CATCH
中再次设置类似的代码,在那里我得到了元素,但它没有效果。。。
不要每次在foreach循环中调用FindElements,而是调用它并将输入元素存储在变量中。然后循环这些输入,它似乎每次都在同一页上调用FindElements?