我正在编写一个程序,我在其中使用FluentWait搜索将在一定时间后上传到网页的元素。然后我需要程序点击元素并从那里开始工作。我的问题是,如果页面不经常刷新,这将如何工作?我知道它使用特定的时间设置轮询网站,但如果浏览器没有重新加载页面,它怎么能真正找到新元素?
Wait<WebDriver> wait = new FluentWait(driver)
.withTimeout(5, TimeUnit.SECONDS)
.pollingEvery(1, TimeUnit.SECONDS)
.ignoring(NoSuchElementException.class);
WebElement refresher = wait.until(new Function<WebDriver, WebElement>()
{
public WebElement apply(WebDriver driver)
{
return driver.findElement(By.linkText("Link Text of Item"));
}
});
String productlink = driver.findElement(By.linkText("Link Text of Item")).getAttribute("href");
driver.get(productlink);
这是我尝试使用while循环刷新浏览器,直到找到该元素(在这种情况下是网站添加的产品)
Boolean isPresent = driver.findElements(By.linkText("Supreme®/ANTIHERO® Ppe Crewneck")).size() > 0;
while(!isPresent){
driver.get(driver.getCurrentUrl());
}
我是Selenium的新手,我们非常感谢任何指导。
答案 0 :(得分:0)
如果浏览器未刷新页面,或者没有更新页面内容的javascript,则FluentWait将找不到您要查找的元素。如果您的测试采取会导致页面刷新的操作,或者某些javascript更新内容,则显示目标元素,FluentWait确实有用。 FluentWait的目标是等待足够长的时间,以便在单击元素之前完成刷新/更新。