Seleniumエラー

ある日突然、Seleniumの初期化時にエラーが発生するようになってしまった。

環境

  • Selenium 4.8.0
  • Chrome 110.0.5481.77
  • Python 3.10.10

不具合内容

Pythonスクリプト内のSeleniumの初期化部分で、次のようなエラーが発生するようになった。

Traceback (most recent call last):
  File "/Users/foobar/Developments/olnovel/./download.py", line 71, in <module>
    web.init(True) #True指定ならヘッドレス
  File "/Users/foobar/Developments/olnovel/lib/web.py", line 51, in init
    driver = webdriver.Chrome(service=chrome_service, options=options)
  File "/opt/homebrew/lib/python3.10/site-packages/selenium/webdriver/chrome/webdriver.py", line 80, in __init__
    super().__init__(
  File "/opt/homebrew/lib/python3.10/site-packages/selenium/webdriver/chromium/webdriver.py", line 104, in __init__
    super().__init__(
  File "/opt/homebrew/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py", line 286, in __init__
    self.start_session(capabilities, browser_profile)
  File "/opt/homebrew/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py", line 378, in start_session
    response = self.execute(Command.NEW_SESSION, parameters)
  File "/opt/homebrew/lib/python3.10/site-packages/selenium/webdriver/remote/webdriver.py", line 440, in execute
    self.error_handler.check_response(response)
  File "/opt/homebrew/lib/python3.10/site-packages/selenium/webdriver/remote/errorhandler.py", line 245, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: unable to discover open pages
Stacktrace:
0   chromedriver                        0x00000001008991c0 chromedriver + 4248000
1   chromedriver                        0x0000000100819dc0 chromedriver + 3726784
2   chromedriver                        0x00000001004ceec4 chromedriver + 274116
3   chromedriver                        0x00000001004fa22c chromedriver + 451116
4   chromedriver                        0x00000001004f605c chromedriver + 434268
5   chromedriver                        0x00000001004f319c chromedriver + 422300
6   chromedriver                        0x0000000100536c10 chromedriver + 699408
7   chromedriver                        0x00000001004fd200 chromedriver + 463360
8   chromedriver                        0x00000001004fe318 chromedriver + 467736
9   chromedriver                        0x0000000100867060 chromedriver + 4042848
10  chromedriver                        0x000000010086b8a4 chromedriver + 4061348
11  chromedriver                        0x00000001008733d0 chromedriver + 4092880
12  chromedriver                        0x000000010086c6e4 chromedriver + 4064996
13  chromedriver                        0x00000001008420fc chromedriver + 3891452
14  chromedriver                        0x000000010088ca64 chromedriver + 4196964
15  chromedriver                        0x000000010088cbb8 chromedriver + 4197304
16  chromedriver                        0x00000001008a0650 chromedriver + 4277840
17  libsystem_pthread.dylib             0x000000019a6f606c _pthread_start + 148
18  libsystem_pthread.dylib             0x000000019a6f0e2c thread_start + 8

原因

Selenium 4.8.0 および chromedriver でのヘッドレス指定に関する仕様変更のため。

Selenium 4.8.0

属性 headless が廃止になった。ヘッドレス指定は、add_argument 関数を使用する。

Chrome 110

‘–headless’ に Chrome のバージョンに応じた値を渡すのが必須となるよう仕様変更があった。(以前から値を渡すことはできたが、必須ではなかった。)

対策

add_argument 関数を使って Chrome 109 以降の場合は ‘–headless=new’、Chrome 108 以前の場合は ‘–headless=chrome’ と指定する。

参考

タイトルとURLをコピーしました