【发布时间】:2016-06-15 16:38:30
【问题描述】:
我在循环浏览 WebElement 列表时遇到问题。它在第一次迭代中工作,但在第二次迭代中失败。
工作流程
循环 1 正确执行并创建 Web 元素列表。我这样做是因为我认为 Loop 2 失败是因为导航切换(例如单击 web 元素)
在循环 2 执行期间
-
ListofLinks已填充 - 在第一次迭代中,它工作正常,点击 web 元素并完成循环
- 第二次迭代
Item.Text失败。看起来该项目不存在。
有什么想法吗?
var ListOflinks = new List<IWebElement>();
//Loop 1
foreach (var item in driver.FindElements(By.TagName("a")))
{
if (item.Text != "")
{
ListOflinks.Add(item);
}
}
// Loop 2
foreach (var item in ListOflinks)
{
if (item.Text != "") // <<<<---- Fails Here
{
// Clicks on Current Link
item.Click();
}
}
注意:在我尝试 2 循环解决方案之前。我正在经历相同的结果。它适用于第一个 web 元素,然后在第二次迭代中失败。
foreach (var item in driver.FindElements(By.TagName("a")))
{
if (item.Text != "")
{
item.Click();
}
}
【问题讨论】:
-
当您点击第一个链接时,页面可能会更改或导航到另一个页面。所以你需要回到原始状态才能进一步导航。
-
你想在这里测试什么? item.Text != ""
-
等待元素可见、可点击总是一个好习惯。我建议你在你的代码中实现 wait() ,看看这是否有什么不同。
标签: c# selenium for-loop foreach