2013-10-17 24 views
0

好吧,这个让我在墙上碰撞了一段时间。
我看一个网页元素的列表。我访问列表,像这样在页面重新载入后查找元素

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

的问题是,在循环中,我需要改变的网页之类的东西,但最后我回到该页面有链接列表。
只要我打第二次迭代,我得到以下错误:

enter image description here

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

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

回答

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(); 
} 
相关问题