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 중국어 웹사이트의 기타 관련 기사를 참조하세요!