부실 요소 참조: 예외 소스 식별
WebDriver 테스트를 실행하는 동안 "부실 요소 참조" 예외가 발생하면 실망스러울 수 있습니다. 오류에 대해 자세히 알아보고 이 문제를 해결하기 위한 솔루션을 살펴보겠습니다.
오류 개요
WebDriver가 다음을 시도할 때 "부실 요소 참조" 예외가 발생합니다. 더 이상 DOM의 일부가 아닌 요소와 상호 작용합니다. 이는 다음과 같은 다양한 이유로 발생할 수 있습니다.
코드 예
제공된 코드 조각은 이 오류가 발생할 수 있는 시나리오를 보여줍니다.
<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>
예외 이유
제공된 HTML 구조에 따르면 xpath가 있는 요소를 클릭하려고 하면 오류가 발생할 가능성이 높습니다. //*[@id='divContentHolder']/div[1]/ 에[1]. 이는 초기 탐색 및 요소 검색 후 요소가 제거되거나 변경되었기 때문일 수 있습니다.
해결책
이 문제를 해결하려면 오래된 요소 참조 예외입니다. 한 가지 접근 방식은 다음 코드 조각에 설명된 대로 예외를 포착하고 작업을 다시 시도하는 것입니다.
<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>
추가 참고 사항
위 내용은 WebDriver 테스트에서 "부실 요소 참조" 예외가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!