1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Python】あるある?ChromeDriverのバージョン不一致をLineに通知する方法

Last updated at Posted at 2021-09-05

#はじめに
私はPythonのSeleniumでwebサイトへのログインやサイト情報の確認を自動化しています。
その際にChromeDriverを使っています。
ところが、Chromeブラウザが定期的に自動アップデートされるので、ChromeDriverとのバージョン不一致でプログラムが止まっていることがよくあります。(ありますよね!?)

エラー処理を入れないと、数日間動いていなかったなんてことも・・・。

そこで今回はChromeDriverのバージョン不一致をLineに通知する方法を紹介したいと思います。

#環境
・python3.7
・windows10
・Chromeブラウザ

#エラー内容
日本語訳:
selenium.common.exceptions.SessionNotCreatedException:
メッセージ:セッションが作成されていません:このバージョンのChromeDriverはChromeバージョン89のみをサポートしています。
現在のブラウザバージョンは93.0.4577.63でパスは・・・なんとかかんとか。

selenium.common.exceptions.SessionNotCreatedException: 
Message: session not created: This version of ChromeDriver only supports Chrome version 89 Current browser version is 93.0.4577.63 with binary path C:\Program Files (x86)\Google\Chrome\Application\chrome.exe

ChromeDriverのバージョンとChromeブラウザバージョンが不一致ってことですね。
Chromeブラウザのバージョンは自動で上がっちゃうので。確かにブラウザは最新版の方がセキュリティ的に安心。

ちなみにChromeブラウザの自動更新を停止するためには、「GoogleUpdate.exe」というファイルを削除するか、名前を変えてしまうと、その後自動更新は行われなくなるそうです。バージョン不一致はこちらでも解決できます。
私はブラウザの更新をお勧めします。

#バージョン不一致通知プログラム

chromedriver_error.py
import requests                 #←Line通知用
import sys                      #←強制終了用
from selenium import webdriver#←selenium

#↓try節でChromeを起動して、webスクレイピングを開始します。
try:
    driver = webdriver.Chrome("c:/driver/chromedriver.exe") #←chromedriver.exeの保管場所。最新版を置くところです。
    driver.get("https://www.google.co.jp")#←webスクレイピングしたいサイトのURL。サイトは例なので好きなところに書きかえてください。


#↓except節はエラーがあった場合のみ、通過します。今回はここにLine通知用のプログラムを記載しています。
    
except:
    addmessage="ドライバエラーが発生しています"                                #←変更不要
    line_notify_token = '*******************************************'          #line_notify_tokenを発行して記載してください。
    line_notify_api = 'https://notify-api.line.me/api/notify'                  #←変更不要
    message = addmessage                                                       #←変更不要
    payload = {'message':"\r\n"+ message}                                      #←変更不要
    headers = {'Authorization': 'Bearer ' + line_notify_token}                 #←変更不要
    line_notify = requests.post(line_notify_api, data=payload, headers=headers)#←変更不要
    sys.exit()                                                                 #←強制終了。変更不要
       
#↓ドライバーエラーが発生しない場合はこの行以下を実行するので好きなコードを書いてください。

line_notify_tokenを発行方法はGoogleで検索して頂ければすぐ見つかると思います。

###ちなみにバージョン不一致のエラーを解消したい場合
まずChromeブラウザのバージョンを確認します。
1.Chromeを開く > 右上の「・・・」(設定) > [ヘルプ] > [Google Chromeについて]
image.png
今は「93.0.4577.63」ですね。

2.ChromeDriverをダウンロードする。以下のサイトにあります。
https://chromedriver.chromium.org/downloads

image.png
Topページにさっそく「Supports Chrome version 93」と記載のあるChromeDriverがありました。今回はChromeブラウザのバージョンが93なので、これでOKです。
自分が利用しているブラウザバージョンをサポートしているバージョンをダウンロードしてください。

#最後に
いかがでしたでしょうか。経験上バージョン不一致のエラーは1か月~3か月くらいの周期で発生します。今はLine通知が来たらChromeDriverを手動で入れ替えていますが、これも自動化できたらいいですね。ご参考になれば幸いです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?