>  기사  >  Java  >  Selenium-WebDriver의 암시적 대기와 명시적 대기: 어느 것을 선택해야 합니까?

Selenium-WebDriver의 암시적 대기와 명시적 대기: 어느 것을 선택해야 합니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-02 11:45:30851검색

Implicit vs. Explicit Waits in Selenium-WebDriver: Which Should You Choose?

Selenium-WebDriver의 대기 모범 사례

Selenium-WebDriver로 작업할 때 요소가 다음과 같은지 확인하기 위해 대기를 구현해야 하는 경우가 많습니다. 작업을 수행하기 전에 로드됩니다. 두 가지 일반적인 접근 방식은 암시적 대기와 명시적 대기입니다.

암시적 대기:

암시적 대기는 드라이버.manage().timeouts().implicitlyWait(2, TimeUnit을 사용하여 설정됩니다. .초);. 이는 모든 드라이버 작업에 전체적으로 영향을 미치며 모든 요소 조회 시도에 대한 시간 초과 기간을 제공합니다. 이 접근 방식은 UI 로드 시간을 예측할 수 없는 시나리오에 편리할 수 있지만 전체적으로 대기 시간이 길어질 수 있습니다.

명시적 대기:

명시적 대기, 예: WebDriverWait.until(condition-that-finds-the-element);와 같이 특정 요소 또는 조건에서 실행됩니다. 보다 타겟화된 접근 방식을 제공하여 정확한 대기 시간과 요소 존재 여부 또는 가시성과 같은 조건을 지정할 수 있는 기능을 제공합니다.

비교:

Feature Implicit Waits Explicit Waits
Global Scope Yes No
Customization Limited Highly customizable
Precision Less precise Precise

권장 접근 방식:

대부분의 경우 암시적 대기 대신 명시적 대기(특히 fluentWait)를 사용하는 것이 좋습니다. FluentWait는 유연한 시간 제한, 폴링 간격, 예외 처리 등 고급 사용자 정의 옵션을 제공하는 명시적 대기 유형입니다.

FluentWait의 예:

<code class="java">public WebElement fluentWait(final By locator) {
    Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
            .withTimeout(30, TimeUnit.SECONDS)
            .pollingEvery(5, TimeUnit.SECONDS)
            .ignoring(NoSuchElementException.class);

    WebElement foo = wait.until(new Function<WebDriver, WebElement>() {
        public WebElement apply(WebDriver driver) {
            return driver.findElement(locator);
        }
    });

    return foo;
}</code>

By FluentWait를 활용하면 요소 조회에 대한 특정 시간 제한을 설정하고 테스트 속도를 늦출 수 있는 불필요한 전역 대기 시간을 피할 수 있습니다.

위 내용은 Selenium-WebDriver의 암시적 대기와 명시적 대기: 어느 것을 선택해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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