ブラウザ自動操作を簡単にする 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を用いたブラウザ自動化のプロジェクトも可能ですので、もしお困りのときはぜひお声がけください。