Selenium 바로 꺼짐 - Selenium balo kkeojim

Codeit Logo

로그인

웹 자동화웹사이트 제어하기Selenium 준비하기

크롬창이 바로 꺼집니다.

2021년 12월 18일

151 조회

답변 1

강우혁

LV

35

Selenium 바로 꺼짐 - Selenium balo kkeojim

강우혁

LV

35

Selenium 바로 꺼짐 - Selenium balo kkeojim

질문 지켜보기를 시작하면 질문에 답변, 댓글이 달릴 때 알림을 받을 수 있어요.

댓글 0개

0

랑이

2021년 12월 20일

LV

197

Selenium 바로 꺼짐 - Selenium balo kkeojim

댓글 0개

0

질문 지켜보기

질문 지켜보기를 시작하면 질문에 답변, 댓글이 달릴 때 알림을 받을 수 있어요.

python으로 브라우저 컨트롤시에 selenium를 이용해서 컨트롤하는 경우

드라이버 생성을 특정함수 안에서 하게 되면 함수가 종료될때 브라우저도 같이 종료되는데,

가끔 종료되지 않았으면 할때 아래 방법대로 하면 됩니다.(다른 방법도 있을건데 잘 몰라서..)

핵심은 option에 add_experimental_option를 추가하고 "detach"를 True로 활성화 하면됩니다.

Edge의 경우(Chrome이나 다른 브라우저는 확인하지 않아서 잘 모름, 뭐 비슷하지 않을까 합니다.)

pip install msedge-selenium-tools

from msedge.selenium_toos import Edge, EdgeOption

이렇게 하면 from selenium import webdriver를 하지 않아도 됩니다.(당연히 msedgedriver.exe도 받지 않아도 되고)

edge_options = EdgeOptions()

edge_options.use_chromium = True

edge_options.add_experimental_option("detach", True)

browser = Edge(options=edge_options)

browser.get("http://~")

안녕하세요.

코딩을 가장 쉽게 알려주는 크리에이터, 스타트코딩입니다.

selenium 버전이 4버전대로 업데이트 되면서 기존 코드가 제대로 동작하지 않을 수 있습니다.

deprecated 메시지도 뜨고요.

from selenium import webdriver

from selenium.webdriver.chrome.service import Service

from selenium.webdriver.chrome.options import Options

# 크롬 드라이버 자동 업데이트

from webdriver_manager.chrome import ChromeDriverManager

# 브라우저 꺼짐 방지

chrome_options = Options()

chrome_options.add_experimental_option("detach", True)

# 불필요한 에러 메시지 없애기

chrome_options.add_experimental_option("excludeSwitches", ["enable-logging"])

service = Service(executable_path=ChromeDriverManager().install())

driver = webdriver.Chrome(service=service, options=chrome_options)

# 웹페이지 해당 주소 이동

driver.get("https://www.naver.com")

셀레니움 모듈 설치 후 윈도우 c드라이버(C:/dev_python/Webdriver/chromedriver) 폴더에

크롬드라이버까지는 설치를 했고 아래 소스코드를 실행시키면 크롬 창이 열리긴 합니다. 

==============================================

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

chromedriver = 'C:/dev_python/Webdriver/chromedriver'

driver = webdriver.Chrome(chromedriver)

==============================================

문제는 열린 후에 저절로 종료가 되며 아래와 같은 에러 메시지가 뜨는데요..

---------------------------------------------------------------------------
WebDriverException                        Traceback (most recent call last)
<ipython-input-22-3fda3c2e7dab> in <module>
      3 
      4 chromedriver = 'C:/dev_python/Webdriver/chromedriver'
----> 5 driver = webdriver.Chrome(chromedriver)

~\anaconda3\lib\site-packages\selenium\webdriver\chrome\webdriver.py in __init__(self, executable_path, port, options, service_args, desired_capabilities, service_log_path, chrome_options, keep_alive)
     74 
     75         try:
---> 76             RemoteWebDriver.__init__(
     77                 self,
     78                 command_executor=ChromeRemoteConnection(

~\anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py in __init__(self, command_executor, desired_capabilities, browser_profile, proxy, keep_alive, file_detector, options)
    155             warnings.warn("Please use FirefoxOptions to set browser profile",
    156                           DeprecationWarning, stacklevel=2)
--> 157         self.start_session(capabilities, browser_profile)
    158         self._switch_to = SwitchTo(self)
    159         self._mobile = Mobile(self)

~\anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py in start_session(self, capabilities, browser_profile)
    250         parameters = {"capabilities": w3c_caps,
    251                       "desiredCapabilities": capabilities}
--> 252         response = self.execute(Command.NEW_SESSION, parameters)
    253         if 'sessionId' not in response:
    254             response = response['value']

~\anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py in execute(self, driver_command, params)
    319         response = self.command_executor.execute(driver_command, params)
    320         if response:
--> 321             self.error_handler.check_response(response)
    322             response['value'] = self._unwrap_value(
    323                 response.get('value', None))

~\anaconda3\lib\site-packages\selenium\webdriver\remote\errorhandler.py in check_response(self, response)
    240                 alert_text = value['alert'].get('text')
    241             raise exception_class(message, screen, stacktrace, alert_text)
--> 242         raise exception_class(message, screen, stacktrace)
    243 
    244     def _value_or_default(self, obj, key, default):

WebDriverException: Message: unknown error: unable to discover open pages
  (Driver info: chromedriver=2.0,platform=Windows NT 6.2 x86_64)

에러의 원인이 무엇일까요?