5
7

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 1 year has passed since last update.

(Mac)PythonのSeleniumで「chromedriveのpathの場所が見つからない」時の対応

Last updated at Posted at 2021-09-11

概要

chromedriverを無事インストール出来て、seleniumを使ってプログラムの動作テストを行った処、以下のエラーで悩まされました。
selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home
google翻訳のところ
selenium.common.exceptions.WebDriverException:Message:「chromedriver」実行可能ファイルはPATHに含まれている必要があります。 https://sites.google.com/a/chromium.org/chromedriver/homeをご覧くださいということで、
これはchromedriverの実行ファイルまでのパスを通して下さいというエラーメッセージらしいです。
folderの検索窓に「chromedriver」を記述して検索しても、あるのは「chromedriver.rb」だけで、「chromedriver」は見つかりませんでした。

driverの場所が探せなくて苦労してググている時、このリンクで教えてもらいました。

「Python/ChromeDriverインストールとパスの通し方」
https://watlab-blog.com/2019/08/10/chromedriver-path/
※ちなみに、解決策2の「pip install chromedriver-binary-auto」については、実施していません。(解決策1で対処した為です)

これであっという間に解決しました。!!感謝を込めて記録しておこうと思います。

構築環境

・macos Ventura 13.2
・Python 3.10.4
・機種名: iMac18,3
・selenium 4.11.2

Google Chromeのインストール

まずは、Google Chromeをインストール
スクリーンショット 2021-09-11 16.23.31.png
<参考>
Google Chrome をダウンロードしてインストールする
https://support.google.com/chrome/answer/95346?hl=ja&co=GENIE.Platform%3DDesktop

pipでseleniumおよびchromedriver-binaryをインストール

次にseleniumモジュールとchromedriver-binaryモジュールをインポートします。

$ python3 -m pip install selenium
$ python3 -m pip install chromedriver-binary 	# (※1)パスを通すためのコード

<参考>
「Pythonのpipコマンドでうまくパッケージがインストールできない場合がある理由と対処法」
https://news.mynavi.jp/article/zeropython-77/

検証

これで、下のテストを行ったところ無事に動きました。
決め手は、import chromedriver_binary でした。

#tast_program.py

from selenium import webdriver
# find_element() メソッドを呼び出す際に要素を見つける方法を指定するために使用
from selenium.webdriver.common.by import By
# 要素が特定の条件を満たすまで待機するために使用
from selenium.webdriver.support.ui import WebDriverWait
# WebDriverWait と組み合わせて、要素が特定の条件を満たすまで待機するために使用
from selenium.webdriver.support import expected_conditions

# Serviceクラスは、ブラウザのドライバーを実行するためのサービスを管理するためのクラス
# 通常、直接使用することはありませんが、カスタム設定が必要な場合に便利
from selenium.webdriver.chrome.service import Service as ChromeService
# -----------------------------------------------------------
import time
# -----------------------------------------------------------
# Chromedriverを簡単にインストール・管理できるようにするためのパッケージ
#Driverの場所:/Users/xxxxxxxx/(以下隠しファイル).pyenv/versions/3.10.4/lib/python3.10/site-packages/chromedriver_binary

import chromedriver_binary

# Chromedriverを使用してChromeブラウザを起動
driver = webdriver.Chrome()
# -------------------------------------------------------------
# ヘッドレスモード設定
options = webdriver.ChromeOptions()
options.add_argument("--headless")

driver.get('https://google.com')
# ------------------------------------------------------
# 検索文字を入力するためのxpath
xpath = '//*[@id="APjFqb"]'
search = "python"#input('検索する内容:')

# タイムアウトを10秒に設定
wait = WebDriverWait(driver, 10)

# 検索文字列を入力
input = driver.find_element(By.XPATH,xpath)#<-selenium3以降
input.send_keys(search + 'について')
input.submit()

# すべてのページが表示されるまで2秒待機
time.sleep(2)
#ターミナルへ表示
for elem_h3 in driver.find_elements(By.XPATH,'//a/h3'):
    elem_a = elem_h3.find_element(By.XPATH,'..')
    print(elem_h3.text)
    print(elem_a.get_attribute('href'))
    print('')
    print('-'*50)
# このドライバを終了し、開かれていたすべての関連ウィンドウを閉じる
driver.quit()

##出力結果
スクリーンショット 2021-09-11 17.15.21.png

追記

(「PATH で検出された chromedriver バージョン (xxx.x.xxxx.xxx) は、検出された chrome バージョン (xxx.x .xxxx.xxx)) と互換性がない可能性があります。」とfメッセージが表示された場合の対応)

(メッセージの例)
The chromedriver version (115.0.5790.102) detected in PATH at /Users/xxxxxxxx/.pyenv/versions/3.10.4/lib/python3.10/site-packages/chromedriver_binary/chromedriver might not be compatible with the detected chrome version (115.0.5790.170); currently, chromedriver 115.0.5790.170 is recommended for chrome 115.*, so it is advised to delete the driver in PATH and retry

”PATH で検出された chromedriver バージョン (115.0.5790.102) は、検出された chrome バージョン (115.0.5790.170) と互換性がない可能性があります。; 現在、Chrome 115.* には chromedriver 115.0.5790.170 が推奨されているため、PATH 内のドライバーを削除して再試行することをお勧めします。”

(対応)

上記サイトからGoogleChromrのバージョンに近いバージョン選択してpipインストールする!
(例)
pip install chromedriver-binary==115.0.5790.170.0

(具体的手順)

1,「GoogleChriome」の右上の3つの点をクリック ー 設定をクリック ー Chromeについて をクリック

スクリーンショット 2023-08-16 9.38.23.png

2,https://pypi.org/project/chromedriver-binary/#history
を開き、リリース履歴をスクロールして、上記のGoogleChromeのバージョンに近いバージョン(xxx.x.xxxxまででいいみたい)を探しクリックする
スクリーンショット 2023-08-16 9.34.33.png

3,クリップビードにコピーをクリックして、ターミナルなどに貼り付けてインストールする。

スクリーンショット 2023-08-16 9.35.04.png

スクリーンショット 2023-08-16 9.35.44.png

4,pip listで変更を確認する。
以上です。

5
7
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
5
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?