오류 처리: 동적 링크에 대한 "부실 요소 참조" 수정
동적 웹 중에 웹 요소가 오래되어 페이지 문서에서 분리될 수 있습니다. 페이지 변경. 이로 인해 이러한 요소와 상호 작용하려고 할 때 "부실 요소 참조" 오류가 발생할 수 있습니다. 새로운 콘텐츠를 로드하는 메뉴나 탭을 탐색할 때 특별한 경우가 발생합니다.
제공된 예에서 Selenium은 여러 개의 동일한 링크 목록 내의 링크를 클릭하려고 시도합니다. "오래된 요소 참조: 요소가 페이지 문서에 첨부되지 않았습니다." 오류는 기본 페이지 구조가 변경된 후 요소 참조가 오래되었기 때문에 발생합니다.
이 문제를 해결하려면 예외 처리를 활용하고 다시 초기화할 수 있습니다. 페이지 콘텐츠가 다시 로드된 후의 요소 참조입니다. 다음 수정된 코드 조각은 이 접근 방식을 보여줍니다.
<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>
예외 처리를 통합하여 try-catch 블록 내에서 요소 참조를 다시 초기화하여 가장 최신 참조가 사용되도록 합니다. 상호 작용. 이는 "부실 요소 참조" 오류를 효과적으로 완화하고 동적 웹 페이지 내에서 성공적인 탐색을 가능하게 합니다.
위 내용은 동적 웹 페이지용 Selenium에서 '부실 요소 참조' 오류를 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!