プログラミング

【最新版】Seleniumでexecutable_pathを使うと警告文が出るとき【回避方法】

スポンサーリンク

白黒つけようぜ!くまねこ(@kumanecoblog)です。
今日もPython捗っていますか?

Seleniumバージョン4のリリースされました。
それに併せて、今まで通り「executable_path」をそのまま使うと警告文が出てきます。
今のところ、警告文が出るだけなので使用はできますが、
この警告文といつ使えなくなるのかと思うのは、結構不安になる方もいるかもしれません。

僕はこういう警告文が出るのはストレスになっちゃうので
できるだけ回避したい派です

今回はexecutable_pathを使った時に警告文が出るときの回避方法をお伝えします。
2022年12月最新版です。

この記事は
  • executable_pathを使うと警告文がでる
  • 警告文を回避する方法が知りたい

という人に役立ちます。

スポンサーリンク

エラー文

なぜ急にエラー文が出るようになったのか

原因を一言で表すと「バージョンアップ」です。

約2年以上かけてα版が公開されていたSeleniumバージョン4が
ついにリリースされました。
それに併せてSeleniumモジュールもアップグレードされました。
Selenium4では新たな機能がたくさん追加されました。

つまり以前のバージョンで使えていた機能が「非推奨になったものがある」と言うことです

公式では「以前のバージョンとの互換性はある」と記載されているので
いくつかの例外はあるみたいですね。

実際のエラー文

実際に表示されるエラー文(警告文)です。

「executable_pathは非推奨なのでServiseを使ってください」と言われます。
そのあとに「Serviceオブジェクト」を使うように勧めれらます。

スポンサーリンク

該当ソースコード

シークレットモードでクロームが開きブログに自動アクセスするという簡単なコードです。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from time import sleep

chrome_path = r"C:\chromedriver_win32\chromedriver.exe"

options = Options()
options.add_argument("--incognito")

driver = webdriver.Chrome(executable_path=chrome_path, options=options)

url = "https://www.kumaneco.net/"
driver.get(url)

sleep(5)
driver.quit()

この10行目のexecutable_pathでchrome_path(ドライバーがある場所)を
直接指定する方法が非推奨になったみたいです。

スポンサーリンク

回避方法

公式ドキュメントに回避方法があるので、それに従って書き直していきます。

公式ドキュメント

公式ドキュメントの説明では
「Serviceオブジェクト」を使って「executable_path」を指定するみたいです。

https://www.selenium.dev/ja/documentation/webdriver/troubleshooting/upgrade_to_selenium_4/

実際どう直したか

追加と修正したのは3か所です。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service #1:Serviceをインポート
from time import sleep

chrome_path = r"C:\chromedriver_win32\chromedriver.exe"
options = Options()
options.add_argument("--incognito")

service = Service(executable_path=chrome_path) #2:executable_pathを指定
driver = webdriver.Chrome(service=service, options=options) #3:serviceを渡す

url = "https://www.kumaneco.net/"
driver.get(url)

sleep(5)
driver.quit()
1. Serviceをインポート

まずは、公式が勧めていたServiceをインポートします。
この時、特に追加でインストールするものはありません。

2. executable_pathを指定

Serviceの引数にexecutable_pathを指定して、serviseに代入します。
※代入する変数はなんでも大丈夫です。わかりやすく、小文字serviceにしました。

3. serviceを渡す

最後にwebdriver.Chrome()にserviceを渡します。

以上です。

まとめ

以上、Seleniumでexecutable_pathを使うと警告文が出るときの回避方法でした。

上のように直したら、警告文は出てこなくなりました。もちろん問題なく動きます。

動作するけれど警告文が出たりするとドキドキしてしまいましたが、
原因がわかれば問題なく対策でき、解決できました。

くまねこ君
くまねこ君

アップデート内容はちゃんとチェックすることは

プログラミング初心者には勉強にもなるよ

この記事が少しでも役立ててもらえたらうれしいです。
今回も最後まで読んでいただき、本当にありがとうございました!

コメント

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