>백엔드 개발 >C++ >내 WebDriverWait가 요소를 기다리지 않는 이유는 무엇입니까?

내 WebDriverWait가 요소를 기다리지 않는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-03 16:29:39617검색

Why Isn't My WebDriverWait Waiting for the Element?

WebDriverWait가 지정된 요소를 기다리지 않음

문제

WebDriverWait를 구현할 때 해당 텍스트를 검색하기 전에 요소가 나타날 때까지 기다리는 대기 기능 무시된 것으로 나타납니다. 예외.

설명

기본 이유:

기본적으로 WebDriverWait는 폴링 간격을 사용하여 요소의 존재를 주기적으로 확인합니다. 초기 확인 중에 요소를 즉시 사용할 수 없는 경우 후속 폴링 간격이 요소의 모양을 포착할 만큼 빈번하지 않아 예외가 발생할 수 있습니다.

해결 방법

1. 폴링 빈도 늘리기:

WebDriverWait가 요소를 더 자주 확인하도록 하려면 더 작은 값의 TimeSpan을 WebDriverWait 생성자에 전달하여 폴링 간격을 늘립니다.

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(1));

2. ExpectedConditions.ElementIsVisible 사용:

또는 요소가 표시되어 상호 작용에 사용 가능해질 때까지 명시적으로 기다리는 SeleniumExtras.WaitHelpers의 ExpectedConditions.ElementIsVisible 메서드를 사용할 수 있습니다. 이렇게 하면 폴링 종속성이 제거됩니다.

string messageText = new WebDriverWait(driver, TimeSpan.FromSeconds(30)).Until(ExpectedConditions.ElementIsVisible(By.ClassName("block-ui-message"))).GetAttribute("innerHTML");

3. DotNetSeleniumExtras.WaitHelpers 사용:

DotNetSeleniumExtras.WaitHelpers nuget 패키지를 사용하는 경우 ExpectedConditions 클래스를 직접 가져와 사용할 수 있습니다.

string messageText = new WebDriverWait(driver, TimeSpan.FromSeconds(30)).Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementIsVisible(By.ClassName("block-ui-message"))).GetAttribute("innerHTML");

위 내용은 내 WebDriverWait가 요소를 기다리지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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