Selenium IDE。
「Selenium IDE」を使ってみた。
Selenium と言えば、確かに便利は便利なんだけど
あのー、テーブル組む所が面倒っつーか
なんか違和感あって、私には馴染めなかったのだなぁ。
で、IDEと言うからには、勝手にその辺り作ってくれちゃう訳で
便利ー♪と思ってたら、HTML以外でもテストスクリプトを用意してくれちゃう
おりこーさんなのでした。
かくして、とりあえず、perlでやってみっか…と思ったら
それが、結構…めんどかったのでメモ。
で、まずIDE君が作ってくれたスクリプトが、だいたいこんな感じ。
#!/usr/bin/perl -wuse strict;
use warnings;
use Time::HiRes qw(sleep);
use Test::WWW::Selenium;
use Test::More "no_plan";
use Test::Exception;
my $sel = Test::WWW::Selenium->new( host => "localhost",
port => 4444,
browser => "*chrome",
browser_url => "http://www.amazon.co.jp/" );
$sel->open_ok("/");
$sel->type_ok("twotabsearchtextbox", "時の翼に乗って");
$sel->click_ok("navGoButtonPanel");
$sel->wait_for_page_to_load_ok("30000");
$sel->click_ok("//td[\@id='search:Td:1']/table/tbody/tr/td[2]/table/tbody/tr/td/table/tbody/tr/td[2]/table/tbody/tr[1]/td/a/span");
$sel->wait_for_page_to_load_ok("30000");
$sel->click_ok("link=オットー・ザンダー");
$sel->wait_for_page_to_load_ok("30000");
exit;
そこで、スクリプト中に出てきた「Time::HiRes」をインストール
perl -MCPAN -e 'install Time::HiRes'
続いて、肝心な「Test::WWW::Selenium」をインストール
perl -MCPAN -e 'install Test::WWW::Selenium'
…が、途中でエラー。
「Pod::Simple」のテストで何か起きてるらしい。
t/xhtml01.....NOK 24# Failed test 'Verbatim text with encodable entities'
# at t/xhtml01.t line 315.
# got: '<pre><code> # this header is very important & don't you forget it
# my $text = "File is: " . <FILE>;</code></pre>
#
# '
# expected: '<pre><code> # this header is very important & don't you forget it
# my $text = "File is: " . <FILE>;</code></pre>
んじゃ仕方ないので、手作業でインストール。
[root@localhost src]# wget http://search.cpan.org/CPAN/authors/id/A/AR/ARANDAL/Pod-Simple-3.07.tar.gz[root@localhost src]# tar -zxvf Pod-Simple-3.07.tar.gz
[root@localhost src]# cd Pod-Simple-3.07
[root@localhost src]# perl Makefile.PL
[root@localhost src]# make
[root@localhost src]# make install
そして、再び「Test::WWW::Selenium」をインストール。
が、やっぱり -MCPAN だとエラーになったので、
仕方なく、これまた同じようにCPANから tar.gz でダウンロードしてきて
手動でインストール。
さて、これでどうよ、と思ったものの
いざIDEの吐き出したスクリプトを保存した「test.pl」を実行するとエラー。
Undefined subroutine &URI::Escape::uri_escape_utf8 called at /usr/lib/perl5/site_perl/5.8.5/WWW/Selenium.pm line 430.
ググったら、ここで言ってる内容から、どうやら URI::Escape のバージョンが古いらしい事に気付く。
そこで URI::Escape をインストール。
perl -MCPAN -e 'install URI::Escape'
こうして、やっと実行出来るーと思ったら、
test.pl を実行すると、またエラー。
Error requesting http://localhost:4444/selenium-server/driver/?cmd=getNewBrowserSession&1=*chrome&2=http%3A%2F%2Fwww.amazon.co.jp%2F:500 Can't connect to localhost:4444 (connect: 接続を拒否されました)
# Looks like your test died before it could output anything.
あれ?(汗)
で、よくよく見ると、どっかに JavaアプリケーションのSelenium Server を立てないとアカン事がわかり
Selenium-RC をダウンロード。
解凍したものの中から「selenium-server.jar」を起動すりゃいいようなので、
※デフォルトのポート番号は、4444。
java -jar selenium-server.jar
これで Selenium Server が起動したものの、
起動したのは Windows側で、perlスクリプトはvmware上のCentOS上にあるので
さっきの test.pl の
my $sel = Test::WWW::Selenium->new( host => "localhost",
…の「localohost」の所を、
Windows側の設定で「VMware Network Adapter VMnet1」に充てられているIPアドレスに書き換え…
my $sel = Test::WWW::Selenium->new( host => "192.168.85.1",
…として、test.pl を実行。
今度こそうまく起動して、Windows側のFireFoxのウインドウが1枚新たに開き、
そこで「test.pl」で指定した内容を実行してくれたのでした。
それにしても、パラメータとして与えた日本語がうまく通らないのがなぁ…。なんでかなぁ。