我有一个这样的场景,我想继续刷新页面,直到某些元素出现在页面中。有人可以帮我吗?
我使用下面的代码进行相同的操作,但页面在五秒后没有刷新
Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
.withTimeout(30, TimeUnit.SECONDS)
.pollingEvery(5, TimeUnit.SECONDS)
.ignoring(NoSuchElementException.class);
WebElement foo = wait.until(new Function<WebDriver, WebElement>() {
public WebElement apply(WebDriver driver) {
return driver.findElement(locator);
}
});
Run Code Online (Sandbox Code Playgroud)
谢谢
苏丹苏
尝试使用FluentWait类。
// Waiting 30 seconds for an element to be present on the page, checking
// for its presence once every 5 seconds.
Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
.withTimeout(30, SECONDS)
.pollingEvery(5, SECONDS)
.ignoring(NoSuchElementException.class);
WebElement foo = wait.until(new Function<WebDriver, WebElement>() {
public WebElement apply(WebDriver driver) {
return driver.findElement(By.id("foo"));
}
});
Run Code Online (Sandbox Code Playgroud)
这样,Selenium 只会等待一段时间,直到加载某些元素。
我希望这能解决您的问题,这样您就不必刷新页面。
编辑:
正如MrTi如此友善地指出的那样,上面的代码不会刷新您的页面。它只会等待一段时间,直到加载某些元素。我只是认为它可以解决问题,而无需刷新页面。如果这不能解决您的问题并且您仍然需要刷新页面,那么您需要driver.navigate().refresh()在返回之前添加,如下所示:
// Waiting 30 seconds for an element to be present on the page, checking
// for its presence once every 5 seconds.
Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
.withTimeout(30, SECONDS)
.pollingEvery(5, SECONDS)
.ignoring(NoSuchElementException.class);
WebElement foo = wait.until(new Function<WebDriver, WebElement>() {
public WebElement apply(WebDriver driver) {
driver.navigate().refresh()
return driver.findElement(By.id("foo"));
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8756 次 |
| 最近记录: |