我的目标网站上有几个高频刷新元素。
元素可能会更改文本,隐藏或显示,但所有元素都是#div。
我需要每隔1秒钟继续获取这些元素,所以我有:
while(true)
{
List<WebElement> tmp = web.findElements(By);
for(WebElement ele : tmp)
{
System.out.println(ele.getText());
}
Thread.sleep(1000);
}
我会得到例外:
在执行for循环时元素不再附加到DOM
是因为在打印之前网站的元素已经刷新。
有没有解决方案可以解决这个问题?我曾尝试使用try-catch跳过异常,但我仍然无法获得所有这些异常。我想如果我可以阻止页面刷新,并在完成for循环后重新启动它。我怎样才能做到这一点?
答案 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
。