0

好吧,这个让我在墙上撞了一会儿。
我查看了一个网络元素列表。我像这样访问该列表

foreach (IWebElement link in driver.FindElementsByCssSelector("span.cn.mailbox > a"))
        {
              // Click at a lot of page and the page will reload eventually
        }

问题是,在循环中,我需要更改页面和内容,但最后我回到了具有链接列表的页面。
一旦我进行第二次迭代,我就会收到以下错误:

在此处输入图像描述

可能是因为我更改了页面,甚至认为我循环通过的集合中的链接是相同的,编译器似乎并不认为它是完全相同的集合。

有没有办法解决这个问题或我可以使用的解决方法?

4

1 回答 1

0

您收到异常的原因是 driver.FindElementsByCssSelector 引用的页面已重新加载。

像这样的东西应该可以工作:创建一个链接文本数组。遍历链接文本数组,单击每个链接。

string [] links = new string[driver.FindElementsByCssSelector("span.cn.mailbox > a").Count);

int i = 0;
foreach (IWebElement link in driver.FindElementsByCssSelector("span.cn.mailbox > a"))
{
    links[i++] = link.Text;
}

for (int i = 0; i < driver.FindElementsByCssSelector("span.cn.mailbox > a").Count; i++)
{
   driver.FindElementByLinkText(links[i]).Click();
}
于 2013-10-17T17:12:20.117 回答