さっきまで同じコードで上手くいっていたのに、
急に動かなくなりcannot parse internal JSON templateエラーを吐き続けていたのですが
ググっても解決方法があまり出てこなかったので記事にしました。
どうやら原因・解決方法は複数あるようなのですが、
私にとっては一番楽だった『プロファイルの削除』を試してみたら一発で解決しました。
エラーの内容:SessionNotCreatedException
Seleniumを使った自動化スクリプトを実行している際、
以下のようなエラーが発生しました。
selenium.common.exceptions.SessionNotCreatedException: Message: session not created
from unknown error: cannot parse internal JSON template: Line: 1, column: 2, Unexpected data after root element.
該当のソースコード
問題が発生した際のコードは以下の通りです。
driver = webdriver.Chrome(executable_path="./chromedriver.exe", options=options)
エラーの原因
このエラーは、Chromeのプロファイルが破損しているか、SeleniumやChromeDriverがChromeと互換性が取れていない場合に発生することがあります。
エラーメッセージに「cannot parse internal JSON template」とありますが、
これはChromeの内部データが何らかの理由で正しく処理できなかったことを示しています。
対処方法
このエラーを解決するために、以下の手順を実行しました。
Seleniumで使用していたプロファイルを削除・作り直す
自動化で使用していたプロファイルが破損していたため、そのプロファイルを削除して新しく作り直しました。
これにより、エラーが解消されました。
実際の手順
1. プロファイルの削除と再作成方法
- プロファイルの場所を確認:
自動化で使用していたプロファイルは、Seleniumを通じて指定していたものです。例えば、user-data-dir
オプションを使用して指定していた場合、そのディレクトリを確認してください。options = webdriver.ChromeOptions() options.add_argument("user-data-dir=./path_to_profile")
- プロファイルディレクトリの削除:
このディレクトリ(path_to_profile
)を削除します。これにより、Seleniumは新しいプロファイルを作成します。 - 新しいプロファイルの作成
プロファイルディレクトリを削除した後、自動化スクリプトを再実行すると、新しいプロファイルが自動的に作成されます。
2. 自動ログインの設定
自動ログインを設定していた場合、新しいプロファイルで再度ログインを行い、その後のセッションを保存します。
例えば、ログイン後のクッキーを保存・再利用することで、自動ログインを維持することが可能です。
# ログイン後のクッキーを保存
cookies = driver.get_cookies()
# 次回の実行でクッキーを再利用
for cookie in cookies:
driver.add_cookie(cookie)
参考にしたサイト
以下のStack Overflowの質問が非常に参考になりました:
Chromeプロファイルが破損している場合は、プロファイルを削除して新しく作り直すことで問題が解消されることが多いです。
私の場合はこれで解決しましたが、それでも解決しない場合は上記のサイトを参考にしてみてください。