Seleniumで「selenium.common.exceptions.SessionNotCreatedException」って出たので対処法メモ

Seleniumを使用しており、
selenium.common.exceptions.SessionNotCreatedExceptionエラーが出たので対処法をメモ
Chromeバージョン129以降でヘッドレスモードを使用する際に下記対応している方は試してみてください。
``` Python
options.add_argument('--headless=old')
```

## 結論
Google Chromeは自動アップデートされるブラウザ(エバーグリーンブラウザ)のため、
アップデートに気づかず、オプションを使用できないことが原因でした。
``` Python
options.add_argument('--headless=old')
↓
options.add_argument('--headless')
```
とすることで私の場合は解決しました。

下記、解決までの流れを備忘録として書いておきます。


#### 実行環境
Windows 11
Python 3.12

## エラー時のコード(一部抜粋)
``` Python
options = webdriver.ChromeOptions()
options.add_argument("--log-level=3")
options.add_argument('--headless=old')
driver = webdriver.Chrome(options=options)
driver.get('https://https://www.google.com/')
```

## エラー内容
```
Traceback (most recent call last):
  File "C:\Users\USER_NAME\Downloads\toolname\my_tool\script.py", line 56, in <module>
    driver = webdriver.Chrome(options=options)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\USER_NAME\AppData\Local\Programs\Python\Python312\Lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 45, in __init__
    super().__init__(
  File "C:\Users\USER_NAME\AppData\Local\Programs\Python\Python312\Lib\site-packages\selenium\webdriver\chromium\webdriver.py", line 66, in __init__
    super().__init__(command_executor=executor, options=options)
  File "C:\Users\USER_NAME\AppData\Local\Programs\Python\Python312\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 250, in __init__
    self.start_session(capabilities)
  File "C:\Users\USER_NAME\AppData\Local\Programs\Python\Python312\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 342, in start_session
    response = self.execute(Command.NEW_SESSION, caps)["value"]
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\USER_NAME\AppData\Local\Programs\Python\Python312\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 429, in execute
    self.error_handler.check_response(response)
  File "C:\Users\USER_NAME\AppData\Local\Programs\Python\Python312\Lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 232, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: Chrome failed to start: was killed.
  (session not created: DevToolsActivePort file doesn't exist)
  (The process started from chrome location C:\Program Files\Google\Chrome\Application\chrome.exe is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
Stacktrace:
        GetHandleVerifier [0x00007FF627444C25+3179557]
        (No symbol) [0x00007FF6270A88A0]
        (No symbol) [0x00007FF626F391CA]
        (No symbol) [0x00007FF626F75F3B]
        (No symbol) [0x00007FF626F71CCD]
        (No symbol) [0x00007FF626FC5E8B]
        (No symbol) [0x00007FF626FC5460]
        (No symbol) [0x00007FF626FB7A03]
        (No symbol) [0x00007FF626F806D0]
        (No symbol) [0x00007FF626F81983]
        GetHandleVerifier [0x00007FF6274A67CD+3579853]
        GetHandleVerifier [0x00007FF6274BD1D2+3672530]
        GetHandleVerifier [0x00007FF6274B2153+3627347]
        GetHandleVerifier [0x00007FF62721092A+868650]
        (No symbol) [0x00007FF6270B2FFF]
        (No symbol) [0x00007FF6270AF4A4]
        (No symbol) [0x00007FF6270AF646]
        (No symbol) [0x00007FF62709EAA9]
        BaseThreadInitThunk [0x00007FFDF642E8D7+23]
        RtlUserThreadStart [0x00007FFDF869BF6C+44]
```
selenium.common.exceptions.SessionNotCreatedExceptionのエラーが出たときは、
Google ChromeとWebdriverのバージョンの不整合によることが多いそうです。

## ChromeとWebDriverアップデートをしてみる 

Chromeバージョン: 134.0.6998.166（Official Build） （64 ビット）
WebDriverは[Selenium Manager ](https://www.selenium.dev/documentation/selenium_manager/)により自動でドライバーを取得。
→上記エラー発生(ドライバーが問題か未確定)
## オプションを無効にする
```python
options = webdriver.ChromeOptions()
#options.add_argument("--log-level=3")
#options.add_argument('--headless=old')
#driver = webdriver.Chrome(options=options)
driver = webdriver.Chrome()
driver.get('https://https://www.google.com/')
``` 
→正常にページが開かれた(ドライバーに問題がないことを意味する)
## ヘッドレスモードの記述を変更する

```python
options = webdriver.ChromeOptions()
options.add_argument("--log-level=3")
options.add_argument('--headless') ## '--headless=old'から変更
driver = webdriver.Chrome(options=options)
driver.get('https://https://www.google.com/')
``` 
→へッドレスモードで正常動作した(ヘッドレスモードの記述に問題があることを意味する)
## 実はちゃんとアナウンスされていた
[Removing --headless=old from Chrome](https://developer.chrome.com/blog/removing-headless-old-from-chrome)によると、Chromeバージョン132以降では
``` python
options.add_argument('--headless-old')
```
と記述するとヘッドレスモードで起動する代わりに役立つエラーメッセージを表示すると書いていました。

## まとめ
・エラー時の調べ力と周辺知識をもっと身に着けなければいけないとおもいｍ