Selenium - 如何在高频刷新网页上正确获取元素

时间:2016-08-05 02:51:20

标签: java selenium

我的目标网站上有几个高频刷新元素。

元素可能会更改文本,隐藏或显示,但所有元素都是#div。

我需要每隔1秒钟继续获取这些元素,所以我有:

while(true)
{
    List<WebElement> tmp = web.findElements(By);
    for(WebElement ele : tmp)
    {
      System.out.println(ele.getText());
    }   
    Thread.sleep(1000);
 }

我会得到例外:

  

元素不再附加到DOM

在执行for循环时

是因为在打印之前网站的元素已经刷新。

有没有解决方案可以解决这个问题?我曾尝试使用try-catch跳过异常,但我仍然无法获得所有这些异常。我想如果我可以阻止页面刷新,并在完成for循环后重新启动它。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

例如:

<div id = "BLOCK"> 
   <div>1</div> 
   <div>2</div> 
   ... 
</div>

如果我们想在BLOCK下获取所有div的文本,我们可以使用

web.findElement(By.id("BLOCK")).getText();

它会返回

>     1
>     2
>     ...

然后,处理我们通过split(“\ n”)得到的字符串。

这不仅适用于div,还适用于其他标记,例如tr, td, p, etc