Python

PythonでSelenium 4を使う(備忘録)


今までもPythonでSelenium 4を使っていたが、ハードディスクが突然死し、環境が一部変わったことに伴い、今まで問題なく動いていたプログラムが動かなくなった。

それもあってPython(正確にはAnaconda)自体、再インストールしたのだが、なぜか今まで問題なく動いていたプログラムが動かない。

どうやら chromedriver.exe の場所が認識されていない様子。

もちろんファイルの場所は間違いなく指定しているのだが、なぜか認識してくれない。

ネットでいろいろ調べて格闘数時間、何とか動くようになったので、備忘用として記事にしておく。

結論としては以下の2点を修正したら直った。

  • ファイルのPathの指定をする際に「\」バックスラッシュをエスケープする(「\\」にする
  • 今まではフォルダ指定のみで動いていたが、「...\\Python\\chromedriver.exe」とファイル名まで指定する

エスケープだが、具体的には下のように書くということ

× E:\Documents\Python\\
○ E:\\Documents\\Python\\

なぜ今までエスケープしないで動いていたのか、またファイル名の指定なしで動いていたのかは不明。

とりあえず問題なく動くようになったので良しとする。

 

また、以下のコードでも動くことが分かったが、その場合は
pip install webdriver-manager
とやって、webdriver-managerをインストールしておかないとダメっぽい。

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get("https://www.google.com")

 

なおPythonのインストールコマンド(?)には、pipではなくpip3というのもあるがその違いはこちら

  • pip3 is an updated version of pip which is used basically for python 3+.
  • If I use pip3, the package will only be installed for python3. It won’t be available for 2.7 or 2.9.

とのこと。

自分の場合、Python3しか使っていないので、pip3を使えばよいみたいだ。

 

【参考記事】
[Solved] DeprecationWarning: executable_path has been deprecated, please pass in a Service object
Webdriver Manager for Python
【初心者向け】Pythonでパス設定するときに「\」が含まれていると予期せぬ動作になる
Python+SeleniumWebDriverではwebdriver_managerを使うといちいちdriverのexeを置き換えなくて済む
Selenium 4で「DeprecationWarning」が出る場合の対策