ブラウザ自動操作を簡単にする Selenium

Selenium とは

Selenium は2004年に開発されて以来、ブラウザの自動操作やWebシステムのUIテストなど、多くの目的で利用されるようになりました。誕生してから15年以上経っていますが、改良が重ねられ今でも現役で利用することができます。そのため、ブラウザの自動操作ではデファクトスタンダードになっています。今後もしばらくはSeleniumは不動のものとなるでしょう。これからでも遅くないので、ぜひSeleniumに触れてみてください。

Selenium の利用

Selenium を利用してプログラムにより処理するとき、 WebDriver が用いられますが、次のようなブラウザに対応しています。

  • Firefox
  • Google Chrome
  • Internet Explorer
  • Safari
  • Microsoft Edge

またプログラミング言語としては、次の言語が利用可能です。

  • Java
  • C#
  • Ruby
  • Python

ここでは、Google ChromeをPython3から自動操作してみましょう。以下、PCに

  • Google Chrome
  • Python3

がインストールされ、Python3は適切に環境変数の PATH が通っているものとします。

WebDriver のダウンロード

WebDriverは、利用するGoogle Chromeのバージョンに合わす必要があります。
ChromeのURLに「 chrome://settings/help 」と入力し設定画面を開いてください。
そしてChromeのバージョンを確認します。下記の場合ですと、「バージョン: 79.0.3945.117」と書かれており「バージョン 79」であることがわかります。

そして下記URLより、使用するChromeのバージョンに対応したWebDriverをダウンロードします。そして任意の場所で展開しましょう。これは後ほど利用します。
https://chromedriver.chromium.org/downloads

Selenium のインストール

Selenium のインストールは pip から実行すると簡単でしょう。

$ pip install selenium

プロジェクト作成

それでは Selenium を動かすためのプロジェクトを作成しましょう。フォルダ構成は次のようにしました。先にダウンロードしていたWebDriverをdriverフォルダ配下に配置します。

SeleniumTestProject/
 ├ driver/
 │ └ chromedriver.exe
 └ main.py

main.py に自動操作したい内容を記述します。下記は、Facebookにアクセスし、メールアドレス・パスワードを入力し、ログインボタンをクリックする例です。

from selenium import webdriver

# Facebookを開く
driver = webdriver.Chrome('.\driver\chromedriver.exe')
driver.get('https://ja-jp.facebook.com/')

# ユーザ名入力
login_email = driver.find_element_by_id("email")
login_email.clear()
login_email.send_keys('hoge@fuga.com')

# パスワード入力
login_password = driver.find_element_by_id("pass")
login_password.clear()
login_password.send_keys('password')

# ログインボタンをクリック
login_button = driver.find_element_by_id("u_0_b")
login_button.click()

4行目に WebDriverのパスを指定していますが、環境変数にPATHを通しておくと、ここでの指定は特に必要ないですが、私は異なる実行環境でも変わりなく動かせるようにと、毎プロジェクトに WebDriver を配置するようにしています。

プロジェクト実行

それでは実行してみましょう。

$ cd SeleniumTestProject
$ python main.py

正常に実行されると、Chromeが立ち上がります。画面上部には「Chrome は自動テスト ソフトウェアによって」しばらくするとFacebookが表示され、自動的にメールアドレス・パスワードが入力されます。そしてログインが実行されいつものFacebookの画面が表示されました。ユーザの状態によっては全く同じにならないこともありますので、そのときは設定を変更する必要があります。

補足

Pythonで作成したプロジェクトは PyInstaller を利用してExe化することが可能です。ただし、WebDriverを含めた形で1つのExeにしようとすると、Exeは作成できるものの実行するとエラーが発生してしまいます。WebDriverを含める場合は、1つのExeにするためのオプションは使用しないようにしましょう。

まとめ

Selenium は歴史あるブラウザ自動操作ツールであり、現在でも多くのユーザに愛されています。その使い方も非常に簡単で、Pythonを利用すると上記に示した通り、ほんの数行で自動化ができてしまいます。もちろん、もっと複雑な使い方もできます。

TKS2では、Seleniumを用いたブラウザ自動化のプロジェクトも可能ですので、もしお困りのときはぜひお声がけください。