Rumah > Java > javaTutorial > teks badan

Mengapa Saya Mendapat Pengecualian 'Rujukan Elemen Lapuk' dalam Ujian WebDriver Saya?

Linda Hamilton
Lepaskan: 2024-11-05 04:40:02
asal
805 orang telah melayarinya

Why Am I Getting the

Rujukan Elemen Lapuk: Mengenalpasti Sumber Pengecualian

Menghadapi pengecualian "rujukan unsur basi" semasa melaksanakan ujian WebDriver boleh mengecewakan. Mari kita selidiki butiran ralat dan teroka penyelesaian untuk menyelesaikan isu ini.

Tinjauan Keseluruhan Ralat

Pengecualian "rujukan unsur basi" berlaku apabila WebDriver cuba untuk berinteraksi dengan elemen yang bukan lagi sebahagian daripada DOM. Ini boleh berlaku atas pelbagai sebab, seperti:

  • Elemen telah dialih keluar daripada DOM sebelum WebDriver boleh melakukan tindakannya.
  • Halaman telah dimuat semula atau dimuat semula, membatalkan yang sebelumnya rujukan elemen.

Contoh Kod

Coretan kod yang disediakan mempamerkan senario di mana ralat ini mungkin berlaku:

<code class="java">public static void main(String[] args) throws InterruptedException {
    // ...
    List<WebElement> LeftNavLinks = driver.findElements(By.xpath("//*[@id='sliding-navigation']//a"));
    for (WebElement e : LeftNavLinks) {
        if(e.getText().equals("Benefit Status")) {
            driver.findElement(By.xpath(String.format("//*[@id='sliding-navigation']/li[%s]/a", i))).click();
            driver.findElement(By.xpath("//* [@id='divContentHolder']/div[1]/a[1]")).click();
        }
        i++;
    }
}</code>
Salin selepas log masuk

Sebab Pengecualian

Berdasarkan struktur HTML yang disediakan, ralat mungkin berlaku apabila cuba mengklik elemen dengan xpath //*[@id='divContentHolder']/div[1]/ a[1]. Ini mungkin kerana elemen telah dialih keluar atau ditukar selepas navigasi awal dan pengambilan elemen.

Penyelesaian

Untuk menyelesaikan isu ini, anda boleh melaksanakan mekanisme untuk mengendalikan pengecualian rujukan unsur basi. Satu pendekatan adalah untuk menangkap pengecualian dan mencuba semula tindakan, seperti yang ditunjukkan dalam coretan kod berikut:

<code class="java">try {
    driver.findElement(By.xpath("//*[@id='divContentHolder']/div[1]/a[1]")).click();
} catch (org.openqa.selenium.StaleElementReferenceException ex) {
    // Retry the action here
    driver.findElement(By.xpath("//*[@id='divContentHolder']/div[1]/a[1]")).click();
}</code>
Salin selepas log masuk

Nota Tambahan

  • Adalah penting untuk mengenal pasti baris kod yang manakah memberikan pengecualian untuk menentukan punca masalah.
  • Memuat semula halaman atau menunggu elemen tertentu tersedia juga boleh mengurangkan isu ini.
  • Mengelakkan menggunakan xpaths mutlak dan bergantung pada pencari yang lebih dipercayai boleh meningkatkan kestabilan.

Atas ialah kandungan terperinci Mengapa Saya Mendapat Pengecualian 'Rujukan Elemen Lapuk' dalam Ujian WebDriver Saya?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!