【发布时间】:2021-06-02 14:09:31
【问题描述】:
我在 C# 中使用 Selenium,尝试从网络上的表中获取值到本地表中。
我使用以下方法获取所有行:
var allTableRows = driver.FindElements(By.ClassName("table-row"));
我可以看到 allTableRows 有多个不同的行,不同的 ID 和文本。但是,当我尝试迭代它们并收集每一行的数据时:
foreach (var row in allTableRows)
{
var currentChange = new ChangeHistoryRow();
var date = row.FindElements(By.XPath("//cell"))[0]?.Text;
if (date != null)
{
currentChange.Date = date;
}
var time = row.FindElements(By.XPath("//cell"))[1]?.Text;
if (time != null)
{
currentChange.Time = time;
}
listOfChanges.Add(currentChange);
}
我最终列表中的每个项目都有相同的数据,即第一行的数据。 (即使原始表在每一行中都有不同的日期/时间值)
没有像特定 id/class 那样使用额外的选择器,所以我不得不使用一般规则(按类名排列,然后每行中的单元格仅在 [0]、[1]、[2 ]...等)
我不确定为什么数据总是指向第一行,因为我们试图在 foreach 中获取特定行的元素。
【问题讨论】:
标签: c# selenium xpath classname findelement