Selenium WebDriver の古い要素参照例外: トラブルシューティングと解決策
Selenium WebDriver の古い要素参照例外は、以前に取得した WebElement 参照が無効になると発生します。基礎となる DOM の変更が原因です。この問題は、要素が動的に更新または削除され、既存の参照が廃止されると発生します。
例外の原因
例外は次の場合に発生する可能性があります。
サンプル コードと例外の詳細
ダイアログ ボックスが開くと DOM が変更されるため、提供されたコード スニペットでは要素の認識中に例外が発生します。
WebElement textElement = driver.findElement(By.name("createForm:dateInput_input"));
エラー トレースに次のメッセージが表示されます:
org.openqa.selenium.StaleElementReferenceException: stale element reference: element is not attached to the page document
解決策: WebElement リファレンスを更新します
この問題を解決するには、WebElement 参照を無効にする可能性のある DOM 変更を行った後、WebElement 参照を更新する必要があります。一般的に使用される解決策は次のとおりです。
WebDriverWait wait = new WebDriverWait(driver, 10); wait.until(ExpectedConditions.visibilityOfElementLocated(By.name("createForm:dateInput_input")));
WebElement textElement = (WebElement) ((JavascriptExecutor) driver) .executeScript("return document.querySelector('input[name=\"createForm:dateInput_input\"]')");
追加のヒント
以上がSelenium WebDriver での古い要素参照例外を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。