概要
Seleniumというツールを聞いたことはあるが、今まで使う機会がなかった。
が、Web上である単調作業を繰り返すことになり、しかもその数が膨大で非常に面倒くさい。
そこで自動化しよう! …という話になって、Webの自動化ツールとしてSeleniumを使ってみた。その導入。
以下ではOSはWindows10、ブラウザはGoogle Chrome、プログラミング言語はPython3.9を使っている。
導入
Seleniumを使うには以下が必要である。
- Selenium自身
- ブラウザ
- ブラウザのDriver
以下ではChromeDriverの実行ファイルをダウンロードする方法と、chromedriver-binaryをimportする方法を書いた。
どちらでも動作に問題はないが、後者は開発環境でimportしたものが使われてない旨の警告が出るのが嫌なので、私は前者を使っている。
ChromeDriverをダウンロードする方法
ChromeDriverの開発ページから、対象のOSとChromeのバージョンに合わせたドライバーを拾って来て、任意の場所に置く。
(以下では C:\git\project\driver\chromedrive.exe に置いたと仮定して話を進める)
利用中のChromeのバージョンは「ヘルプ」>「GoogleChromeについて」で確認できる。
pipでSeleniumをインストール。
pip install selenium
Python(test.py)のサンプルコードは以下。
from selenium import webdriver
import time
driver = webdriver.Chrome('C:\git\project\driver\chromedrive.exe')
driver.get('https://www.google.co.jp/')
time.sleep(5)
search_box = driver.find_element_by_name("q")
search_box.send_keys('ChromeDriver')
search_box.submit()
time.sleep(5)
driver.quit()
あとはPythonを叩けば、Chromeが開き、Googleのページを表示。
5秒後に「ChromeDriver」で検索、5秒後に閉じるという自動化ができる。
python test.py
chromedriver-binaryを使う方法
pipでSeleniumとchromedriver-binaryをインストール。
pip install selenium
pip install chromedriver-binary==87.0.4280.88
chromedriver-binaryでバージョンを指定しているのは、その時インストールされているChromeのバージョンに合わせたかったから。
何も指定しないとその時の最新版がインストールされ、Chromeのバージョンと合わない場合、エラーが発生する。
from selenium import webdriver
import time
import chromedriver_binary
driver = webdriver.Chrome()
driver.get('https://www.google.co.jp/')
time.sleep(5)
search_box = driver.find_element_by_name("q")
search_box.send_keys('ChromeDriver')
search_box.submit()
time.sleep(5)
driver.quit()
起動や動作方法については上と同様。
python test.py
その他
上の方法では、Google Chromeのバージョンが更新されると、ドライバーとのバージョンが合わず起動時にエラーが出ることがある。
試しに使うだけならブラウザもドライバーも最新版を使えば良いが、そうでない場合は、ブラウザの自動更新を止めておいたほうがいい。
例えばGoogle Chromeの場合はGoogleUpdate.exeが実行されないようにする。
ただし、ブラウザが自動更新されないと、バグや脆弱性が残ってしまう。
そのため、例えば常用のブラウザはEdge、自動操作させるブラウザはChromeなどと、区別しておいたほうが良さそうではある。