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 메소드 이해:
다음은 언급된 세 가지에 대한 추가 설명을 제공합니다. 방법:
위 내용은 내 Selenium WebDriverWait가 새로 열린 창에서 요소를 찾지 못하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!