> Java > java지도 시간 > 동적 웹 페이지용 Selenium에서 '부실 요소 참조' 오류를 처리하는 방법은 무엇입니까?

동적 웹 페이지용 Selenium에서 '부실 요소 참조' 오류를 처리하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-11-06 00:24:02
원래의
575명이 탐색했습니다.

How to Handle

오류 처리: 동적 링크에 대한 "부실 요소 참조" 수정

동적 웹 중에 웹 요소가 오래되어 페이지 문서에서 분리될 수 있습니다. 페이지 변경. 이로 인해 이러한 요소와 상호 작용하려고 할 때 "부실 요소 참조" 오류가 발생할 수 있습니다. 새로운 콘텐츠를 로드하는 메뉴나 탭을 탐색할 때 특별한 경우가 발생합니다.

제공된 예에서 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&#160;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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿