frei

旧「anney's room」からブログ「frei」だけ引っ越し&残しました

Selenium IDE。

Selenium IDE」を使ってみた。

Selenium と言えば、確かに便利は便利なんだけど

あのー、テーブル組む所が面倒っつーか

なんか違和感あって、私には馴染めなかったのだなぁ。

で、IDEと言うからには、勝手にその辺り作ってくれちゃう訳で

便利ー♪と思ってたら、HTML以外でもテストスクリプトを用意してくれちゃう

おりこーさんなのでした。

かくして、とりあえず、perlでやってみっか…と思ったら

それが、結構…めんどかったのでメモ。

で、まずIDE君が作ってくれたスクリプトが、だいたいこんな感じ。

#!/usr/bin/perl -w

use 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」を起動すりゃいいようなので、

Windows上のコマンドプロンプトで以下を実行。

※デフォルトのポート番号は、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」で指定した内容を実行してくれたのでした。

それにしても、パラメータとして与えた日本語がうまく通らないのがなぁ…。なんでかなぁ。