Selenium Java刷新元素



我正在编程一个自动机器人,该机器人从站点读取数据。它可以正确读取数据,但现在我想用计时器间隔进行。因此,我写了一堂课,扩展了Timertask,并且奏效了。我现在有一个问题,即即使更改了程序,我的程序也会读取相同的数据。

    messages =  Driver.findElements(By.className("messages")).get(0).findElements(By.className("message"));
    String message = null;
    for(int i = 0; i < messages.size(); i++){
        try{
            message = messages.get(i).findElements(By.className("text")).get(0).getAttribute("innerHTML");
            System.out.println(message);
        }catch(StaleElementReferenceException e){
            e.printStackTrace();
        }
    }

如果我在该站点上使用JavaScript执行此操作,我总是会得到刷新的结果,但是在我的Java程序中,它每次都相同。

我将从简化您的代码开始。我建议您花一些时间阅读CSS选择器。他们非常强大和快速。您基本上可以将所有三个定位器组合到一个,以便您只需要搜索一次,而您不应该最终获得陈旧的元素。

for (WebElement message : Driver.findElements(By.cssSelector(".messages .message .text")))
{
    System.out.println(message.getAttribute("innerHTML"));
}

CSS选择器参考

saucelabs:CSS选择器提示

注意:如果您只想要第一个元素,则无需使用.findElements().get(0),只需使用.findElement()即可。注意单数而不是复数。

最新更新