Personal tools
You are here: Home ブログ matsuyama Linux で Selenium RC を使う
Document Actions

Linux で Selenium RC を使う

現在開発している製品の自動テストと負荷テストに Selenium RC(*) が使えそうなのでいろいろ調べてみました。 Selenium RC はブラウザをリモートコントロールすることによって自動テストを行うソフトウェアで、 Selenium RC を操作するライブラリ(Java や Perl など)を使えば、簡単にテストケースを書いて実行することができます。また、一応マルチプラットフォーム対応なので、 Linux で開発している僕にとっては嬉しいソフトウェアなのです。今回はとりあえず Linux で Selenium RC を用いてブラウザをリモートコントロールするところまで説明します。

(*) http://www.openqa.org/selenium-rc/

Selenium RC をダウンロード

http://www.openqa.org/selenium-rc/download.action

上記の URL から最新版をダウンロードしてきます。なお Firefox on Linux だと現時点では正しく動作しないことが多いようなので、もし正しく動作しないようであれば、 Nightly Build を試してみることをお勧めします。

Firefox をリモートコントロール

結論から言うと僕の環境(Gentoo 2.6.22, Firefox 2.0.0.6)では何をやっても正しく動作しませんでした。以下にやったことを記述しておきますので、参考にしてください。

ちなみに Firefox はソースからビルドしたやつです(/usr/lib/mozilla-firefox/firefox-bin)。どこかの掲示板にバリナリ版(/opt/firefox/firefox-bin)を使えば正しく動作するという報告があったのでバリナリ版も試してみましたがダメでした。

初めに Firefox のバリナリプログラムのパスを探します。僕の環境では /usr/lib/mozilla-firefox/firefox-bin にありました。

% file /usr/lib/mozilla-firefox/firefox-bin
/usr/lib/mozilla-firefox/firefox-bin: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), stripped

起動コマンドは以下のようになります。

% java -jar selenium-server.jar -interactive

なおプロキシ設定が必要な環境では以下のように書いてください。

% java -jar -Dhttp.proxyHost=192.168.0.230 -Dhttp.proxyPort=3128 selenium-server.jar -interactive

では、まずチュートリアル通りにやってみます。

cmd=getNewBrowserSession&1=*firefox /usr/lib/mozilla-firefox/firefox-bin&2=http://www.google.com

いきなり問題が発生しました。 Preparing Firefox profile... で停止してしまいます。どうやらカスタムプロファイルを作成したあとの Firefox の再起動のコードにバグがあるらしく、明示的にその Firefox のプロセスを kill してやると動きだすらしいです。実際にプロセスを kill するとウィンドウが出てきたので、続いて以下のコマンドを実行してみました。

cmd=open&1=http://www.google.com/webhp&sessionId=1234

すると Google の画面が表示されます。この後チュートリアル通りにやって正しく動作しているようなので、一応これでも良いのですが、いちいち kill するのが面倒くさいです(自動テストにならない)。

Unstable や Nightly Build ではこの問題が直っているらしいので、ダウンロードしてきて同様にコマンドを実行してみます。

すると Firefox は正しく再起動されるのですが、今度はウィンドウが画面が真っ白になります。よくわからないので firefox フォーマットの変わりに chrome フォーマットを使ってみます。 chrome フォーマットは実験段階のフォーマットらしいです。

cmd=getNewBrowserSession&1=*chrome /usr/lib/mozilla-firefox/firefox-bin&2=http://www.google.com

今度は正しくウィンドウが表示されましたが、

cmd=open&1=http://www.google.com/webhp&sessionId=1234

を実行しても反応がありません。おそらくプロファイルの設定部分にバグがあるのでしょう。

また、 PproxcyInjectionMode などいろいろやりましたが、どれも満足の行く結果は得られませんでした。

ies4linux をリモートコントロール

Firefox でうまく行かないので ies4linux(*) を使ってみます。

(*) http://www.tatanka.com.br/ies4linux/page/Main_Page

Gentoo なら以下のコマンドでインストールすることができます。

% emerge ies4linux
% su foo
% /usr/bin/ies4linux
% ls ~/bin/ie6
/home/foo/bin/ie6

チュートリアルに従えば、

cmd=getNewBrowserSession&1=*iexplore&2=http://www.google.com

なのですが、 iexplore フォーマットは Windows の構成を前提にしているので正しく動作しません。かわりに custom フォーマットを使います。

cmd=getNewBrowserSession&1=*custom /home/foo/bin/ie6&2=http://www.google.com

驚くことに、これで IE が起動してしまいます。しかしカスタムプロファイルの設定がうまくいっていないらしく、 Selenium RC のページが表示されません。しょうがないので、 IE を起動して手動でプロキシを http://127.0.0.1:4444/ に設定します。そして再度上記のコマンドを実行すると Selenium RC のページが正しく表示されます。

http://dev.ariel-networks.com/Members/matsuyama/images/ies4linux-on-selenium-rc/image

その後チュートリアル通りにコマンドを実行してもエラーを出すことなくちゃんと動作しているようです。すばらしい。

結論

Selenium RC を使うにあたって Firefox は正しく動作しないことが多いようです。恐るべきことに ies4linux が動作してしまったのでこちらを利用するのが良いと思います。

次回は Selenium RC を操作するライブラリまわりを調べてみます。

Category(s)
linux
The URL to Trackback this entry is:
http://dev.ariel-networks.com/Members/matsuyama/selenium-rc-on-linux/tbping
Add comment

You can add a comment by filling out the form below. Plain text formatting.

(Required)
(Required)
(Required)
(Required)
(Required)
This helps us prevent automated spamming.
Captcha Image


Copyright(C) 2001 - 2006 Ariel Networks, Inc. All rights reserved.