Selenium C# WebDriver: 강력한 요소 대기 기술
Selenium의 웹 요소와 효율적으로 상호 작용하려면 작업을 시도하기 전에 해당 요소가 있는지 확인해야 합니다. 이렇게 하면 요소가 제때 로드되지 않아 발생하는 일반적인 오류를 방지할 수 있습니다. WebDriverWait
과 ExpectedConditions
을 활용하여 효과적인 대기 전략을 살펴보겠습니다.
표준 접근 방식은 WebDriverWait
및 ExpectedConditions.ElementIsVisible
을 활용합니다.
<code class="language-csharp">WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(5)); wait.Until(ExpectedConditions.ElementIsVisible(By.Id("login")));</code>
이 코드는 ID가 'login'인 요소가 표시될 때까지 최대 5초를 기다립니다. 간결하게 하기 위해 람다 표현식을 사용할 수 있습니다:
<code class="language-csharp">wait.Until(d => d.FindElement(By.Id("login")).Displayed);</code>
그러나 암시적 대기에만 의존하면 성능에 부정적인 영향을 미칠 수 있습니다. 보다 제어된 접근 방식에는 FindElement
:
<code class="language-csharp">public static class WebDriverExtensions { public static IWebElement FindElement(this IWebDriver driver, By by, int timeoutInSeconds) { if (timeoutInSeconds > 0) { var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(timeoutInSeconds)); return wait.Until(drv => drv.FindElement(by)); } return driver.FindElement(by); } }</code>
이 확장 방법을 사용하면 시간 초과를 지정할 수 있습니다. 사용법:
<code class="language-csharp">var btn = driver.FindElement(By.CssSelector("#login_button"), 10); btn.Click();</code>
이 방법은 10초 이내에 CSS 선택기 '#login_button'을 사용하여 요소를 찾으려고 시도합니다. 제한 시간 내에 요소를 찾지 못하면 NoSuchElementException
가 발생합니다. 이는 요소 대기를 처리하는 보다 정확하고 효율적인 방법을 제공하여 Selenium 테스트의 전반적인 견고성을 향상시킵니다.
위 내용은 Selenium C# WebDriver에서 요소 존재를 효율적으로 기다리는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!