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가 브라우저와의 연결이 끊어졌음을 나타냅니다. 이런 종류의 문제는 여러 원인으로 인해 발생할 수 있습니다. 몇 가지 가능한 원인은 다음과 같습니다:

  1. 브라우저가 예기치 않게 종료되었습니다.: 코드 실행 중 브라우저가 충돌하거나 다른 프로세스에 의해 강제로 종료될 수 있습니다. 이 경우 WebDriver는 더 이상 DevTools와 연결할 수 없게 됩니다.
  2. 브라우저 버전과 WebDriver 버전 불일치: 사용 중인 브라우저 버전과 그에 상응하는 WebDriver 버전이 호환되지 않을 경우 연결 문제가 발생할 수 있습니다. 예를 들어, Chrome 브라우저의 새 버전이 설치되었지만, 그에 맞는 chromedriver 업데이트가 되지 않았을 수 있습니다.
  3. 네트워크 문제: 아주 드물지만, 네트워크 불안정이나 방화벽 설정 등으로 인해 DevTools와의 연결이 중단될 수 있습니다.

이 문제를 해결하기 위한 몇 가지 제안은 다음과 같습니다:

  • 브라우저와 WebDriver 버전 확인: 사용 중인 브라우저와 호환되는 WebDriver 버전을 사용하고 있는지 확인하고 필요한 경우 업데이트합니다.
  • WebDriver 재시작: 문제가 발생하면 WebDriver 인스턴스를 완전히 종료하고 다시 시작해 보십시오.
  • 코드 검토: 코드에서 브라우저가 예기치 않게 닫히도록 하는 부분이 있는지 확인합니다. 예를 들어, driver.quit()나 driver.close()가 너무 일찍 호출되지는 않았는지 점검합니다.
  • 네트워크 설정 확인: 네트워크 문제가 의심된다면 연결을 검사하고 필요한 경우 설정을 조정하십시오.

해당 문제가 지속되고 해결이 어렵다면, 사용 중인 브라우저와 WebDriver의 버전 정보, 코드 실행 환경 등 보다 구체적인 정보를 제공해주시면 추가적인 도움을 드릴 수 있습니다.

 
 

+ Recent posts