>Java >java지도 시간 >완전한 웹 페이지 로딩을 확인하는 일반 Selenium 기능이 있습니까?

완전한 웹 페이지 로딩을 확인하는 일반 Selenium 기능이 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-29 01:06:10869검색

Is There a Generic Selenium Function to Verify Complete Web Page Loading?

페이지가 Selenium에 완전히 로드되었는지 확인하는 일반 기능이 있나요?

웹페이지에 페이지가 완전히 로드되었는지 확인하려고 합니다. Selenium을 사용하여 로딩을 완료했습니다. 코드를 사용하여 시도했지만 페이지가 로드되는 동안에도 기다리지 않습니다. 특정 요소의 가시성이나 클릭 가능성을 검사하는 솔루션이 아닌 일반적인 솔루션을 추구합니다.

답변:

아니요, 웹 전체 로딩 page.

설명:

코드를 살펴보겠습니다.

new WebDriverWait(firefoxDriver, pageLoadTimeout).until(
          webDriver -> ((JavascriptExecutor) webDriver).executeScript("return document.readyState").equals("complete"));

이 코드의 pageLoadTimeout 변수는 실제로 실제 pageLoadTimeout과 일치하지 않습니다. () 함수입니다.

단, 페이지가 완전히 로드된 경우 DesiredCapability 또는 ChromeOptions 클래스를 사용하여 "normal"(다른 가능한 값에는 "none" 및 "eager" 포함)로 설정된 pageLoadStrategy()를 사용할 수 있습니다. 예는 다음과 같습니다.

DesiredCapability 사용:

DesiredCapabilities dcap = new DesiredCapabilities();
dcap.setCapability("pageLoadStrategy", "normal");
FirefoxOptions opt = new FirefoxOptions();
opt.merge(dcap);
WebDriver driver = new FirefoxDriver(opt);

사용 ChromeOptions:

ChromeOptions opt = new ChromeOptions();
opt.setPageLoadStrategy(PageLoadStrategy.NORMAL);
WebDriver driver = new FirefoxDriver(opt);

고려 사항:

PageLoadStrategy를 "normal"로 설정하면 브라우저 클라이언트가 'document.readyState'와 동일한 상태에 도달하게 됩니다. "완벽한." 하지만 이것이 모든 JavaScript 및 Ajax 호출이 완료되었음을 보장하지는 않습니다.

이 문제를 해결하려면 모든 JavaScript 및 Ajax 호출이 완료될 때까지 기다리는 함수를 사용할 수 있습니다.

public void WaitForAjax2Complete() throws InterruptedException
{
    while (true)
    {
        if ((Boolean) ((JavascriptExecutor)driver).executeScript("return jQuery.active == 0")){
            break;
        }
        Thread.sleep(100);
    }
}

또는 ExpectedConditions와 함께 WebDriverWait를 사용하여 특정 이벤트나 요소를 기다릴 수 있습니다. 상태:

// Wait for a specific part of the page title
new WebDriverWait(driver, 10).until(ExpectedConditions.titleContains("partial_title_of_application_under_test"));

// Wait for a specific element to become visible
WebElement ele = new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("xpath_of_the_desired_element")));

참조:

  • [Selenium IE WebDriver는 다음 동안에만 작동합니다. 디버깅](https://stackoverflow.com/questions/23791841/selenium-ie-webdriver-only-works-while-debugging)
  • [Selenium 페이지 대기 관리 방법 로드하시겠습니까?](https://stackoverflow.com/questions/19750811/selenium-how-to-manage-wait-for-page-load)
  • [Chrome의 페이지 로드 전략 드라이버](https://stackoverflow.com/questions/55985139/page-load-strategy-for-chrome-driver-updated-till-selenium-v3-12-0)

위 내용은 완전한 웹 페이지 로딩을 확인하는 일반 Selenium 기능이 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.