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:
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>
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>
Nota Tambahan
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!