私は、次のような方法作成しました:要素が古くなるのを待っていますが、なぜ '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::のための要素を待っている(プロキシ要素//[テキスト()=のExchange今»は、 『]』)
)500ミリ秒間隔で(20秒(秒試してみました)陳腐化するのではなく、同じ方法での20のうち18を言わせて上で動作しますビルド、任意のアイデア?あなたが別のdriver.get("http://completely.different.site.com/");
でサイトを変更する場合は、
の代わりにあなたのロジックのすべての?これは 'WebElement'をどのように作成するかによって異なりますが、キャッシュされたルックアップを使用している場合は常に古くなりますが、' FindBy'のように使用されているメソッドを使用している場合それは、それが古くないまでクリックしようとし続けます。 – mrfreester