迭代 IReadOnlyCollection 中的元素时 FindElement 不迭代
FindElement doesnt iterate when iterating elements in IReadOnlyCollection
我正在迭代取自 HTML 的元素。
structureElement
似乎包含找到的元素,但是当我在其上 运行 .FindElement()
时,它 returns 总是从第一次迭代开始计算值。这是为什么?
这是我的代码:
IReadOnlyCollection<IWebElement> structureElements =
driver.FindElements(By.XPath(".//div[contains(@id, 'PSBTree_x-auto-')]"));
//.Where(sE => sE.FindElement(By.XPath("//img[@title]")).GetAttribute("title") != "Customer Item")
IWebElement tmp;
foreach (IWebElement structureElement in structureElements)
{
//if (structureElement.FindElement(By.XPath("//span//img[@title]")).GetAttribute("title").Contains("Customer Item"))
// continue;
tmp = structureElement.FindElement(By.XPath("//span[@class='cat-icons-tree']/img"));
ReportProgress(progress, ref r, ct, allsteps, message + tmp.GetCssValue("background"));
Thread.Sleep(100);
ReportProgress(progress, ref r, ct, allsteps, message + structureElement.Text);
Thread.Sleep(300);
}
那是因为您在 Xpath
中使用了 //
,这意味着 "select descendants of root",所以它会返回它在文档 中找到的第一个 [=25] =]
如果你想找到那个节点的后代,你可能想试试:
.//span[@class='cat-icons-tree']/img
.//
表示 "select descendants of the context node"
你可以检查轴的所有缩写here
我正在迭代取自 HTML 的元素。
structureElement
似乎包含找到的元素,但是当我在其上 运行 .FindElement()
时,它 returns 总是从第一次迭代开始计算值。这是为什么?
这是我的代码:
IReadOnlyCollection<IWebElement> structureElements =
driver.FindElements(By.XPath(".//div[contains(@id, 'PSBTree_x-auto-')]"));
//.Where(sE => sE.FindElement(By.XPath("//img[@title]")).GetAttribute("title") != "Customer Item")
IWebElement tmp;
foreach (IWebElement structureElement in structureElements)
{
//if (structureElement.FindElement(By.XPath("//span//img[@title]")).GetAttribute("title").Contains("Customer Item"))
// continue;
tmp = structureElement.FindElement(By.XPath("//span[@class='cat-icons-tree']/img"));
ReportProgress(progress, ref r, ct, allsteps, message + tmp.GetCssValue("background"));
Thread.Sleep(100);
ReportProgress(progress, ref r, ct, allsteps, message + structureElement.Text);
Thread.Sleep(300);
}
那是因为您在 Xpath
中使用了 //
,这意味着 "select descendants of root",所以它会返回它在文档 中找到的第一个 [=25] =]
如果你想找到那个节点的后代,你可能想试试:
.//span[@class='cat-icons-tree']/img
.//
表示 "select descendants of the context node"
你可以检查轴的所有缩写here