java FluentWait如何真正看到将被上传的元素?
我正在编写一个程序,在其中我使用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还不熟悉,欢迎提供任何指导
# 1 楼答案
如果浏览器没有刷新页面,或者没有javascript更新页面内容,那么FluentWait将找不到您要查找的元素。FluentWait只有在您的测试执行了一个会导致页面刷新的操作,或者一些javascript更新了内容,从而显示了目标元素时才真正有用。FluentWait的目标是等待足够长的时间,以便刷新/更新在单击元素之前完成