>백엔드 개발 >파이썬 튜토리얼 >내 Selenium WebDriverWait가 새로 열린 창에서 요소를 찾지 못하는 이유는 무엇입니까?

내 Selenium WebDriverWait가 새로 열린 창에서 요소를 찾지 못하는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-21 19:30:11164검색

Why is My Selenium WebDriverWait Failing to Find Elements in a Newly Opened Window?

WebDriverWait가 예상대로 작동하지 않습니다

셀레늄을 활용하여 웹페이지에서 데이터를 추출하고 있습니다. 페이지에는 열 선택을 위한 창을 시작하는 "custom_cols" 버튼이 포함되어 있습니다. 이 새 창을 로드하는 데 가끔 몇 초(구체적으로 약 5초)가 걸립니다.

이 지연을 처리하기 위해 WebDriverWait를 20초 지연으로 사용했습니다. 이상하게도 요소가 화면에 표시되어 있음에도 불구하고 새 창에서 요소를 찾지 못하는 경우가 있습니다. 이 문제는 약 10번의 시도마다 한 번씩 발생합니다.

흥미롭게도 코드의 다른 곳에서 WebDriverWait를 사용하면 예상대로 작동하여 요소를 클릭하기 전에 표시됩니다.

쿼리는 왜 새 요소 내의 요소가 가시성을 감지하기 위해 WebDriverWait를 사용했음에도 불구하고 창이 보이는 것으로 인식되지 않습니다.

제안됨 해결 방법:

요소를 클릭하려고 할 때 element_to_be_clickable() 메서드 대신 WebDriverWait의 존재_of_element_location() 메서드를 사용한다는 사실에서 문제가 발생합니다.

이 문제를 해결하려면 , 다음을 교체하세요 line:

myElem = WebDriverWait(self.browser, delay).until(EC.presence_of_element_located((By.XPATH , xpath)))

with:

myElem = WebDriverWait(self.browser, delay).until(EC.element_to_be_clickable((By.XPATH , xpath)))

WebDriverWait 메소드 이해:

다음은 언급된 세 가지에 대한 추가 설명을 제공합니다. 방법:

  1. presence_of_element_location: 가시성이나 상호 작용 가능성에 관계없이 웹페이지 DOM에 요소가 있는지 확인합니다.
  2. visibility_of_element_location: 요소가 존재하고 표시되며 크기가 다음보다 큰지 확인합니다. 0.
  3. element_to_be_clickable: 요소가 표시되고, 활성화되고, 상호 작용할 수 있도록 보장하여 성공적인 클릭이 가능하도록 합니다.

위 내용은 내 Selenium WebDriverWait가 새로 열린 창에서 요소를 찾지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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