我創建了以下方法:等待元素變爲陳舊,爲什麼'ExpectedConditions.stalenessOf'不起作用?
public void waitAndClickElement(WebElement element) throws InterruptedException {
try {
Boolean elementPresent = this.wait.until(ExpectedConditions.elementToBeClickable(element)).isEnabled();
if (elementPresent == true && element.isDisplayed()) {
element.click();
System.out.println("Clicked on the element: " + element.getText());
}
} catch (StaleElementReferenceException elementUpdated) {
Boolean elementPresent = wait.until(ExpectedConditions.stalenessOf(element));
if (elementPresent == true) {
WebElement staleElement = element;
staleElement.click();
System.out.println("Clicked on the 'Stale' element: " + element.getText());
}
} catch (NoSuchElementException e) {
System.out.println("Exception! - Could not click on the element: " + element.getText() + ", Exception: "+ e.toString());
throw (e);
} finally {
}
}
,但我仍然似乎得到以下以下異常:
預期條件失敗:DefaultElementLocator「By.xpath:等待元素(代理元素//A [文本()='Exchange現在»‘]’)成爲陳舊(嘗試了20秒與500毫秒的間隔)
但相同的方法將上工作假設18個20的建立,任何想法?
感謝您的幫助
而不是你的'catch(StaleElementReferenceException)'塊中的所有邏輯,爲什麼不只是再次調用'waitAndClickElement(element)'?雖然這取決於你如何創建'WebElement',如果你使用緩存查找,它將永遠是陳舊的,但是如果你使用的方法在使用時會發現它,比如'FindBy' ,它會繼續嘗試點擊,直到它不是陳舊的。 – mrfreester