Pengendalian Ralat: Membetulkan "Rujukan Elemen Lapuk" untuk Pautan Dinamik
Elemen web boleh menjadi basi dan tercabut daripada dokumen halaman semasa web dinamik perubahan halaman. Ini boleh membawa kepada ralat "rujukan unsur lapuk" apabila cuba berinteraksi dengan elemen ini. Satu kes tertentu timbul apabila menavigasi melalui menu atau tab yang memuatkan kandungan baharu.
Dalam contoh yang diberikan, Selenium cuba mengklik pautan dalam senarai berbilang pautan yang serupa. Ralat "rujukan elemen basi: elemen tidak dilampirkan pada dokumen halaman" berlaku kerana rujukan elemen menjadi lapuk selepas struktur halaman asas berubah.
Untuk menyelesaikan isu ini, kami boleh memanfaatkan pengendalian pengecualian dan memulakan semula rujukan elemen selepas kandungan halaman dimuat semula. Coretan kod yang diubah suai berikut menunjukkan pendekatan ini:
<code class="java">public static void main(String[] args) throws InterruptedException { WebDriver driver = new ChromeDriver(); driver.navigate().to("url......"); driver.findElement(By.id("Login1_txtEmailID")).sendKeys("[email protected]"); driver.findElement(By.id("Login1_txtPassword")).sendKeys("Testing1*"); driver.findElement(By.id("Login1_btnLogin")).click(); List<WebElement> LeftNavLinks = driver.findElements(By.xpath("//*[@id='sliding-navigation']//a")); Thread.sleep(1000); String ben = "Benefit Status"; for (WebElement e : LeftNavLinks) { String linkText = e.getText(); System.out.print(i + " " + linkText + "\n"); if (linkText.equals(ben)) { String BenefitStatLi = "//*[@id='sliding-navigation']/li[%s]/a"; System.out.print(i + " " + linkText + "\n"); try { driver.findElement(By.xpath(String.format(BenefitStatLi, i))).click(); driver.findElement(By.xpath("//* [@id='divContentHolder']/div[1]/a[1]")).click(); } catch (org.openqa.selenium.StaleElementReferenceException ex) { driver.findElement(By.xpath(String.format(BenefitStatLi, i))).click(); driver.findElement(By.xpath("//* [@id='divContentHolder']/div[1]/a[1]")).click(); } } i++; } }</code>
Dengan memasukkan pengendalian pengecualian, kami memulakan semula rujukan elemen dalam blok cuba-tangkap, memastikan bahawa rujukan yang paling terkini digunakan untuk interaksi. Ini secara berkesan mengurangkan ralat "rujukan unsur lapuk" dan membolehkan navigasi yang berjaya dalam halaman web dinamik.
Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Ralat "Rujukan Elemen Lapuk" dalam Selenium untuk Halaman Web Dinamik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!