Rumah > Java > javaTutorial > teks badan

Bagaimana untuk Menyelesaikan Pengecualian Rujukan Elemen Stale dalam Selenium WebDriver?

DDD
Lepaskan: 2024-11-17 20:13:02
asal
1007 orang telah melayarinya

How to Resolve the Stale Element Reference Exception in Selenium WebDriver?

Pengecualian Rujukan Elemen Lapuk dalam Selenium WebDriver: Penyelesaian Masalah dan Penyelesaian

Pengecualian Rujukan Elemen Lapuk Selenium WebDriver berlaku apabila rujukan yang diperoleh sebelumnya dalam WebvalidElement Element disebabkan oleh perubahan dalam DOM asas. Isu ini timbul apabila elemen dikemas kini atau dialih keluar secara dinamik, menjadikan rujukan sedia ada menjadi usang.

Punca Pengecualian

Pengecualian boleh berlaku apabila:

  • DOM dimanipulasi secara dinamik, seperti menggantikan elemen menggunakan JavaScript.
  • Permintaan AJAX mengemas kini halaman, yang membawa kepada penyingkiran elemen atau rekreasi.
  • Enjin penyemak imbas sendiri membuat perubahan pada DOM untuk pengoptimuman prestasi.

Kod Contoh dan Butiran Pengecualian

Coretan kod yang disediakan mengalami pengecualian semasa pengecaman elemen kerana DOM berubah apabila kotak dialog dibuka dan ditutup:

WebElement textElement = driver.findElement(By.name("createForm:dateInput_input"));
Salin selepas log masuk

Surih ralat memaparkan mesej berikut:

org.openqa.selenium.StaleElementReferenceException: stale element reference: element is not attached to the page document
Salin selepas log masuk

Penyelesaian: Muat semula Rujukan WebElement

Untuk menyelesaikan masalah isu, anda perlu memuat semula rujukan WebElement selepas sebarang perubahan DOM yang boleh membatalkannya. Penyelesaian yang biasa digunakan termasuk:

  • Tunggu secara eksplisit sehingga elemen kelihatan semula menggunakan ExpectedConditions:
WebDriverWait wait = new WebDriverWait(driver, 10);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.name("createForm:dateInput_input")));
Salin selepas log masuk
  • Gunakan pelaksana JavaScript untuk mencari elemen secara langsung:
WebElement textElement = (WebElement) ((JavascriptExecutor) driver)
    .executeScript("return document.querySelector('input[name=\"createForm:dateInput_input\"]')");
Salin selepas log masuk
  • Muat semula halaman menggunakan driver.navigate().refresh() dan cari elemen sekali lagi.

Petua Tambahan

  • Elakkan menggunakan rujukan WebElement merentas berbilang tindakan. Muat semula rujukan selepas setiap tindakan.
  • Semak secara kerap untuk pengecualian elemen lapuk semasa pelaksanaan ujian dan sertakan mekanisme pemulihan.
  • Gunakan mekanisme terbina dalam WebDriver untuk mengendalikan perubahan DOM dinamik, seperti ExpectedConditions dan WebDriverWait kelas.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Pengecualian Rujukan Elemen Stale dalam Selenium WebDriver?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan