LoginSignup
20
22

More than 5 years have passed since last update.

とりあえずSeleniumを触ってみたので少しメモ書き。と言っても全部試したわけじゃないので不足点は多いです。

そもそもSeleniumとは?

Webサイトをテストするためのツール。あらかじめスクリプトを書いておくことで、ブラウザ上でその通りの操作を行い、途中途中で要素が存在するか、URLが期待値と合致しているかどうか などといった検査を行うことができるというものです。

とりあえず「Webサイトの試験と言ったらSelenium」みたいな話を聞いていたのでググってみたら、該当記事が古いのばっかりで凄く不安を感じていたのですが、2012年あたりに2.x系列がリリースされて今も十分使えるプロダクトのようです。

で、Seleniumを使うには

とりあえず 英語版の Seleniumのサイトからダウンロードできます。Seleniumのサイト自体には日本語版があるのですが、日本語サイトからダウンロードできるのは1.xです。まずここで割とハマった。いくら「最新版は公式サイトを見てください」とはいえ・・・。

とりあえず、それぞれのファイルは以下の場所に配置します。

  • Selenium IDE→Firefoxに拡張機能としてインストールします
  • Selenium ServerとInternet Explorer Driver Server→あとで参照可能なフォルダに配置します。IE Driverはパスの通ったフォルダに置いておかないとダメらしいのでC:\Seleniumあたりにフォルダを作って適当においておきます。
  • Selenium Client & WebDriver Language Bindings→とりあえず自分がメインで使う言語のクライアントをインストールしておきます。自分はPythonを使いました。

なお、ここでのPythonは、Version2系統でなければダメなようです(3.xは各所に非互換の部分があるため、正常に動作しません)。自分はPythonの公式ページからダウンロードしましたが、(Selenium Clientのインストールに必要な)setuptoolsやpipが同梱されていないので、以下のサイトを参考にインストールします。

とりあえず、軽く使ってみる

簡単に使うには、ひとまずSelenium IDEを起動して操作を記録→再生するのが一番簡単です。

  1. Firefoxを起動し、Selenium IDEを起動する
  2. Selenium IDEの「アクション>テストの記録」にチェックが入っているのを確認する
  3. Firefoxのウィンドウに戻り、テストしたいサイトを開く
  4. テストしたいページまでリンクを辿って移動する
  5. 「アクション>テストの記録」のチェックを外して記録を停止する

大まかにはこんな感じで、簡単な動作コードができあがります。
Selenium IDEウィンドウ

あとは、テストを行いたい行を選択して、右クリックメニューの「コマンドの挿入」、コマンドに「assertTitle」などのコマンドを入れてテストを追加していきます。このとき、期待する値は「値」フィールドではなく、「対象」フィールドに入れないといけないので注意(ここでまたハマった)
assertコマンドの指定

そのほか注意するべき点として、クリック後、ページ遷移が完了するまで待ちたい場合は、clickコマンドでなく、clickAndWaitコマンドを使うこと、Ajaxなど画面遷移せずに画面が切り替わる処理を待ちたい場合は、waitForVisibleコマンドなどを使って要素の存在を確認すること くらいです。

テストケースを出力する

テストケースをファイルに出力する場合は、「ファイル」メニューの「テストケースを保存」または「テストケースをエクスポート」を選択します。テストケースを保存を選択した場合、テーブルタグで一行に1つずつのテストコードが書かれたHTMLファイルが出力されます。

エクスポートを選ぶと、言語を指定してテストコードをファイルに保存できます。標準ではpython, ruby, c#, javaの4つの言語から選択できますが、コードフォーマットが気に入らない場合、別の言語で出力したい場合は、「オプション>設定」より追加できます。

エクスポートしたテストケースを実行する

エクスポートしたテストケースは、通常通りそれぞれのインタプリタを使って実行できます(ただし、それぞれの言語用のSeleniumクライアントモジュールが事前にインストールされている必要があります)。
ただし、前述の通り、Pythonを使う場合は、バージョン2系列である必要があります。3系列ではスクリプトが上手く動きませんので、ご注意ください。

また、自分の環境ではRubyで出力したファイルがのっけから構文エラーになって使えませんでした。C#などはコンパイルが面倒なので試していません。

言語名の後に「Remote Control」と書かれているものでエクスポートしたテストケースは、Selenium Serverを使って任意のブラウザを起動し処理しますので、事前にSelenium Serverを起動しておく必要があります。Selenium Serverの起動方法は以下のサイトを参照。

とりあえずこのような感じ。また何か見つけたら追記するかもしれません。

20
22
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
22