webdriver 라이브러리에서 selenium을 이용해서 css_selector로 크롬브라우저를 제어하려고 하고 있는데
아래와 같은 오류가 나타났다.
> 주피터 실행문
driver.find_element(By.CSS_SELECTOR,"#query").send_keys('일기예보')
driver.find_element(By.CSS_SELECTOR,"#sform > fieldset > button").click()
> 실행시 발생한 오류
WebDriverException Traceback (most recent call last)
Cell In[23], line 1
----> 1 driver.find_element(By.CSS_SELECTOR,"#query").send_keys('일기예보')
2 driver.find_element(By.CSS_SELECTOR,"#sform > fieldset > button").click()
File ~\AppData\Local\Programs\Python\Python311\Lib\site-packages\selenium\webdriver\remote\webdriver.py:741, in WebDriver.find_element(self, by, value)
738 by = By.CSS_SELECTOR
739 value = f'[name="{value}"]'
--> 741 return self.execute(Command.FIND_ELEMENT, {"using": by, "value": value})["value"]
File ~\AppData\Local\Programs\Python\Python311\Lib\site-packages\selenium\webdriver\remote\webdriver.py:347, in WebDriver.execute(self, driver_command, params)
345 response = self.command_executor.execute(driver_command, params)
346 if response:
--> 347 self.error_handler.check_response(response)
348 response["value"] = self._unwrap_value(response.get("value", None))
349 return response
File ~\AppData\Local\Programs\Python\Python311\Lib\site-packages\selenium\webdriver\remote\errorhandler.py:229, in ErrorHandler.check_response(self, response)
227 alert_text = value["alert"].get("text")
228 raise exception_class(message, screen, stacktrace, alert_text) # type: ignore[call-arg] # mypy is not smart enough here
--> 229 raise exception_class(message, screen, stacktrace)
WebDriverException: Message: disconnected: not connected to DevTools
(failed to check if window was closed: disconnected: not connected to DevTools)
(Session info: chrome=122.0.6261.128)
Stacktrace:
GetHandleVerifier [0x00007FF75325AD02+56930]
(No symbol) [0x00007FF7531CF602]
(No symbol) [0x00007FF7530842E5]
(No symbol) [0x00007FF75307191F]
(No symbol) [0x00007FF753071490]
(No symbol) [0x00007FF753086411]
(No symbol) [0x00007FF7531078B9]
(No symbol) [0x00007FF7530EBA43]
(No symbol) [0x00007FF7530BD438]
(No symbol) [0x00007FF7530BE4D1]
GetHandleVerifier [0x00007FF7535D6F8D+3711213]
GetHandleVerifier [0x00007FF7536304CD+4077101]
GetHandleVerifier [0x00007FF75362865F+4044735]
GetHandleVerifier [0x00007FF7532F9736+706710]
(No symbol) [0x00007FF7531DB8DF]
(No symbol) [0x00007FF7531D6AC4]
(No symbol) [0x00007FF7531D6C1C]
(No symbol) [0x00007FF7531C68D4]
BaseThreadInitThunk [0x00007FFAAFFE7344+20]
RtlUserThreadStart [0x00007FFAB1AC26B1+33]
인터넷 검색을 해도 잘 되지 않았는데, 결국 ChatGPT의 힘을 빌린 결과
위의 오류는 Webdriver와의 연결이 끊어졌을때 나타나는 문제라고 한다.
그래서 다시 내가 제어하고 있었던 크롬 브라우저를 다시 닫고
다시 실행해 보았더니... 이제 잘된다.. ㅠㅠ
뤼튼의 답변;
더보기
제시된 오류는 Selenium을 사용하는 Python 코드 수행 중에 발생한 WebDriverException입니다. 오류 메시지는 "disconnected: not connected to DevTools"이며, 이는 WebDriver가 브라우저와의 연결이 끊어졌음을 나타냅니다. 이런 종류의 문제는 여러 원인으로 인해 발생할 수 있습니다. 몇 가지 가능한 원인은 다음과 같습니다:
- 브라우저가 예기치 않게 종료되었습니다.: 코드 실행 중 브라우저가 충돌하거나 다른 프로세스에 의해 강제로 종료될 수 있습니다. 이 경우 WebDriver는 더 이상 DevTools와 연결할 수 없게 됩니다.
- 브라우저 버전과 WebDriver 버전 불일치: 사용 중인 브라우저 버전과 그에 상응하는 WebDriver 버전이 호환되지 않을 경우 연결 문제가 발생할 수 있습니다. 예를 들어, Chrome 브라우저의 새 버전이 설치되었지만, 그에 맞는 chromedriver 업데이트가 되지 않았을 수 있습니다.
- 네트워크 문제: 아주 드물지만, 네트워크 불안정이나 방화벽 설정 등으로 인해 DevTools와의 연결이 중단될 수 있습니다.
이 문제를 해결하기 위한 몇 가지 제안은 다음과 같습니다:
- 브라우저와 WebDriver 버전 확인: 사용 중인 브라우저와 호환되는 WebDriver 버전을 사용하고 있는지 확인하고 필요한 경우 업데이트합니다.
- WebDriver 재시작: 문제가 발생하면 WebDriver 인스턴스를 완전히 종료하고 다시 시작해 보십시오.
- 코드 검토: 코드에서 브라우저가 예기치 않게 닫히도록 하는 부분이 있는지 확인합니다. 예를 들어, driver.quit()나 driver.close()가 너무 일찍 호출되지는 않았는지 점검합니다.
- 네트워크 설정 확인: 네트워크 문제가 의심된다면 연결을 검사하고 필요한 경우 설정을 조정하십시오.
해당 문제가 지속되고 해결이 어렵다면, 사용 중인 브라우저와 WebDriver의 버전 정보, 코드 실행 환경 등 보다 구체적인 정보를 제공해주시면 추가적인 도움을 드릴 수 있습니다.
'New Collar Level 2' 카테고리의 다른 글
Pandas를 사용해서 데이터 계산하기 (0) | 2024.05.04 |
---|---|
주피터 시작 - 명령어창에서 상대경로 찾는 법 (1) | 2024.03.18 |
네이버 메일의 본문을 자동 입력하기 [미완성] (0) | 2024.03.17 |
VDI로 띄운 창을 제어하기 [미완성] (0) | 2024.03.17 |
pyautogui 라이브러리 중 locateOnScreen함수의 confidence 설정시 에러 (0) | 2024.03.16 |