Rujukan Elemen Lapuk: Membongkar Punca dan Mencari Penyelesaian
Dalam Selenium, menghadapi pengecualian "rujukan unsur basi" boleh mengecewakan, kerana ia menunjukkan bahawa elemen yang dirujuk tidak lagi dilampirkan pada dokumen halaman. Ralat ini sering berlaku apabila DOM telah mengalami perubahan ketara, seperti pemuatan dinamik atau navigasi halaman.
Untuk menyelesaikan isu ini, adalah penting untuk mengenal pasti baris kod yang tepat yang mencetuskan pengecualian. Dalam kod yang disediakan, baris yang bertanggungjawab untuk ralat nampaknya:
<code class="java">driver.findElement(By.xpath(String.format(BenefitStatLi, i))).click();</code>
Barisan ini cuba mengklik pada elemen berdasarkan rentetan XPath yang diformatkan. Walau bagaimanapun, elemen asas mungkin telah dialih keluar atau diubah suai pada masa klik dilaksanakan, membawa kepada pengecualian rujukan elemen lapuk.
Punca asas isu ini ialah DOM tidak stabil apabila kod dilaksanakan . Untuk menangani perkara ini, seseorang boleh mempertimbangkan untuk melaksanakan mekanisme cuba semula yang menunggu elemen tersedia semula sebelum mengkliknya. Berikut ialah contoh percubaan semula sebegini:
<code class="java">try { // Attempt to click on the element driver.findElement(By.xpath(String.format(BenefitStatLi, i))).click(); } catch (org.openqa.selenium.StaleElementReferenceException ex) { // Element is not yet available, so wait and try again Thread.sleep(200); // Replace with appropriate wait time driver.findElement(By.xpath(String.format(BenefitStatLi, i))).click(); }</code>
Dengan memperkenalkan masa menunggu sebelum mencuba semula klik, kod tersebut memberikan DOM masa yang cukup untuk menstabilkan dan memastikan elemen itu hadir dan boleh diklik sebelum meneruskan.
Atas ialah kandungan terperinci Bagaimana Mengendalikan Pengecualian "Rujukan Unsur Lapuk" dalam Selenium?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!