Selenium(セレニウム)とはWebブラウザを操作するAPIとそのツール群です。ブラウザは基本的にマウスとキーボードで操作するものですがこれをプログラムから操作できるようにするのがSeleniumの目的です。
基本的な使われ方
だいたいブラウザに対して次のようなことができます。
- 指定されたURLのページを表示する
- ページに表示された指定の場所の文字を取得する
- テキストエリアやテキストフィールドに文字を入力する
- ボタンを押す
- ラジオボタンや選択ボックスから指定の項目を選択する
- JavaScriptを実行する
また操作するプログラムの実装によって以下のようなことができます。
- for文によって同じ動作を何回も行う
- if文によって画面に表示された内容によって処理を分岐する
SeleniumはUIテストで使われるという話題が多いです。確かに画面を作る側にとっては画面を少し変更した時に毎回ちゃんと動作するか確認するのは骨の折れる作業です。これをSeleniumで自動化して予想と違う状態であれば報告するといった使い方です。
またいつもブラウザで行う作業をあらかじめ決めておいて自動化する方法もあります。認証が必要な場所でも自分のパスワードを入力することができるので認証サイトの情報も取得することができます。
おそらくこのような自動化を防ぐためにいろいろなサイトで重要なリクエストを行う際に画像の文字を読ませたりなど「ロボットでない」確認をする手順が導入されたのだと思います。自動化してしまえば新規アカウントを何千も作られてしまう可能性もあるからです。
基本的な情報源
Seleniumの本拠地が以下のサイトです。英語のサイトなので一次情報に触るには基本的な英語力が必要です。
Seleniumの利用に必要なものや知識
Seleniumは様々な言語で使えるようになっていますがここではJavaでの利用を想定します。
開発環境
Mavenが利用できる環境であれば大抵のIDE 統合開発環境で問題ありません。ここではNetbeansを使いますが使い慣れているIDEがあるようであれば適宜読み替えできると思います。
ブラウザ
当然なのですがブラウザをインストールしておく必要があります。色々なブラウザが利用可能と言われていますが実はブラウザごと、 同じブラウザでもOSごとに微妙に動作が違うためすべてのブラウザで同じように動く保証はありません。
また最近のブラウザは自動更新するためある時いきなり動作が変わるという可能性もあります。Seleniumのバージョンもそれを見越して更新されていくので定期的に新しいバージョンに更新するようにしてください。
またSeleniumにはこのようなブラウザの他に独自にHtmlUnitDriverというブラウザを持っています。これは人の操作は全く想定していないため画面に表示されることはありません。Seleniumはこれによってあたかもブラウザに対して操作を行なっているように動作することができます。
ドライバー
ブラウザとSeleniumの間をつなぐものです。ブラウザごとに異なるドライバーが必要ですが必要のないブラウザもあります。
XPath
XPath(エックスパス)はHTMLやXMLに含まれる項目を指定するのに使われます。例えばボタンがたくさんあるような画面の場合に間違いなく想定のボタンを押すために適切に指定されなくてはなりません。
SeleniumはXPath以外にも項目の指定方法が用意されているのですがXPathは柔軟な指定ができるので覚えると便利です。
次回は環境を作りたいと思います。