키워드를 입력하세요: 진접 카페
Traceback (most recent call last):
File "/Users/eoorim/Desktop/Best_food_crawler/src/crawler.py", line 140, in <module>
crawler(f"{keyword}")
File "/Users/eoorim/Desktop/Best_food_crawler/src/crawler.py", line 47, in crawler
searchbox.send_keys(Keys.ENTER)
File "/Users/eoorim/Desktop/Best_food_crawler/jbenv/lib/python3.12/site-packages/selenium/webdriver/remote/webelement.py", line 231, in send_keys
self._execute(
File "/Users/eoorim/Desktop/Best_food_crawler/jbenv/lib/python3.12/site-packages/selenium/webdriver/remote/webelement.py", line 395, in _execute
return self._parent.execute(command, params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/eoorim/Desktop/Best_food_crawler/jbenv/lib/python3.12/site-packages/selenium/webdriver/remote/webdriver.py", line 354, in execute
self.error_handler.check_response(response)
File "/Users/eoorim/Desktop/Best_food_crawler/jbenv/lib/python3.12/site-packages/selenium/webdriver/remote/errorhandler.py", line 229, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: stale element not found
예상되는 원인
#키워드 검색
searchbox = driver.find_element(By.CLASS_NAME, "input_search")
searchbox.send_keys(f"{keyword}")
time.sleep(2)
searchbox.send_keys(Keys.ENTER)
time.sleep(5)
searchbox를 찾은 후, 키워드를 input에 입력하는 것까지는 확인되었습니다.
그란 이후 searchbox.send_keys(Keys.ENTER)를 실행할 때 searchbox를 찾지 못해 발생하는 오류로 생각됩니다.
해결 방안
searchbox element의 유무를 ENTER 입력하기 전에 체크하여 찾지 못하였다면 직접 예외처리(오류 발생 - raise)하거나,
element가 없다면 다시 찾으려는 시도가 필요할 것으로 생각됩니다.
추가로, time.sleep(2)과 같이 무조건적으로 기다리기 보단, element의 유무를 체크하여 나타날 때까지 기다리는 방식이 더 효율적일 것으로 보입니다.
버그 설명
페이지 로딩이 느릴 경우 검색 오류 발생
console 출력 내용
예상되는 원인
searchbox를 찾은 후, 키워드를 input에 입력하는 것까지는 확인되었습니다. 그란 이후
searchbox.send_keys(Keys.ENTER)
를 실행할 때searchbox
를 찾지 못해 발생하는 오류로 생각됩니다.해결 방안
searchbox element의 유무를 ENTER 입력하기 전에 체크하여 찾지 못하였다면 직접 예외처리(오류 발생 -
raise
)하거나, element가 없다면 다시 찾으려는 시도가 필요할 것으로 생각됩니다.추가로,
time.sleep(2)
과 같이 무조건적으로 기다리기 보단, element의 유무를 체크하여 나타날 때까지 기다리는 방식이 더 효율적일 것으로 보입니다.