嘗試使用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"));
}
});
這樣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"));
}
});
Emil,這段代碼不會刷新頁面。您可能想要在返回之前插入'driver.navigate()。refresh()'。 –
謝謝@MrTi我已經用你的建議更新了我的答案。我希望這將解決你的問題mfsi_SudhansuPanda。 –