ラベル テストネタ selenium の投稿を表示しています。 すべての投稿を表示
ラベル テストネタ selenium の投稿を表示しています。 すべての投稿を表示

2011年11月12日土曜日

Firefox8にしたらSeleniumRCが動かなくなっちゃったときのメモ

Firefox 3.6 から 7 にしたら、SeleniumRC(selenium-server 1.0.3)が動かなくなってしまいググったら、
↓のエントリを発見し、無事解決できました。
[Selenium][Firefox][PHPUnit] Selenium RCで新しいバージョンのFirefoxを動かす


が、しかし

Firefox 8 にしたらどうも↑の戦法では解決できず・・・・。


かるーく、ググッてみても解決策が見つからなかったので、とりあえず昼寝。(オイ


起きてふと

「selenium server 2 入れたらできるんじゃね?」

と思いついたのでやってみたところ、うまくいきました。


http://seleniumhq.org/download/ の



↑からダウンロードして

$ java -jar selenium-server-standalone-2.12.0.jar
で起動して、試しにテストを動かしてみたら問題なく動きましたとさ。
でも、Firefox8ではatacheFileコマンドやtypeコマンド利用してファイルのアップロードが色々試してみたけど出来ず><

やっぱ、Firefox7 or 3.6 に戻そうかな・・・・。

2011年2月27日日曜日

SeleniumRCでよく使うコマンド10選 〜基本編〜

最近よくSeleniumRCのテストケース(php版)を書いています。
よく使うコマンドをここいらでまとめておこうかと。
基本すぎてSleniumエキスパートの方には面白くないとおもいますw

■ open(おーぷん)

まずは基本中の基本のオープンコマンド。
絶対URLや相対URLを指定してページを開くコマンドです。
$this->open("http://example.com/hoge/huga/1");
とか
$this->open("/hoge/huga/1");
のように使います。

相対URLを指定した場合は、setBrowserUrl()で指定したURLに結合して実行されます。

■ click(くりっく)

Linkやsubmitボタンをクリックするコマンドです。
name属性やvalue属性、XPathなどをを指定して実行することが出来ます。

$this->click("link=前のページに戻る");
とか
$this->click("participate");
とか
$this->click("//input[@value='ログイン']");
とか
OpenPNE3のPC版ログインページのログインボタンを指定してクリックの場合
$this->click("//html/body/div/div/div[2]/div/div[2]/div/div/form/table/tbody/tr[4]/td/input");
のように実行します。

openコマンドやclickコマンドのあとにwaitForPageToLoad(うぇいとふぉーぺーじとぅろーど)コマンドを入れてあげないと、
ページのロードが終わる前に次のコードを実行してしまうことになり、テストケースが途中で失敗します。
割とよく忘れるので注意が必要です。

■ type(たいぷ)

テキストエリアを指定してテキストを入力するコマンドです。

$this->type("keyword", "うどん");
のように、テキストエリアのname属性と入力値を引数にとって実行します。

■ select(せれくと)

セレクトボックスのラベルを指定して選択するコマンドです。

$this->select("language_culture", "label=日本語 (日本)");
のように、セレクトボックスのidとラベルを引数にとって実行します。

ラベルの引数を空にすれば、セレクトボックスの空を選択するテストも出来ます。

■ isElementPresent(いずえれめんとぷれぜんと)

エレメントが存在するか確認するコマンドです。
$this->isElementPresent("//*[@id=\"page_member_home\"]");
のように、body idなどを指定し実行します。

■ isTextPresent(いずてきすとぷれぜんと)

テキスト(文字列)が存在するか確認するコマンドです。
$this->isTextPresent("うどん");
のように、文字列などを指定し実行します。

■ assertTrue(あさーととぅるー)

引数を判定し正を返すコマンドです。
isElementPresentやisTextPresentなどと組み合わせて使用します。

$this->assertTrue($this->isElementPresent("//*[@id=\"page_member_home\"]"));
とか
$this->assertTrue($this->isTextPresent("うどん"));
のように使います

■ getText(げっとてきすと)

LinkタイトルやsubmitボタンのタイトルやXPathを指定し、その指定した箇所にある文字列を取得します。

$this->getText("link=削除する"));
とか
$this->getText("//input[@value='削除する']"));
とか
$this->getText("//div[@id='Center']/div[2]/div/div[1]/h3"));
のように、使用します。

■ getLocation(げっとろけーしょん)

現在開いているページの絶対URLを取得します。


■ assertEquals(あさーといこーる)

二つの値をを比較し、等しくないときにエラーメッセージを返します。

Googleでhello worldと検索し、検索結果ページのタイトルを比較したい場合
$this->assertEquals("hello world - Google 検索", $this->getTitle());
のようなコードになります。

現在開いているURLが正しいか比較したい場合は
$this->assertEquals("http://hogehoge.com/", $this->grtLocation());
のようなコードになります。

まとめ

超基本のopenコマンドからまとめてみました。SleniumIDEでちまちまテストケースを作っていくのでも良いのですが、コマンド覚えてしまえば
手動で作っていくほうがきっと早いでしょう。
今回紹介した以外にも素敵なコマンドが沢山あるので深めていきたいと思います。
これからもSeleniumRCをガンガン使っていこうとおもっているので、おすすめ便利コマンドがあったら教えてくださいね!


参考
・http://www.phpunit.de/manual/3.3/ja/api.html

2011年1月25日火曜日

SeleniumRCで自動テスト!〜セットアップ編〜

おはようございます。
作業環境をMacBookAir(Mac OS X 10.6.6 Snow Leopard)に移行したので、こちらにもSeleniumRC環境をつくろうとやってみました。
特にWindowsXPでセットアップしたときと違いはありませんでした。

MacBookAirのPHPのバージョンなどの環境は以下のとおりです。

hoge@hoge-MacBookAir:~$ php -v
PHP 5.3.3 (cli) (built: Aug 22 2010 19:41:55)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies

hoge@hoge-MacBookAir:~$ java -version
java version "1.6.0_22"
Java(TM) SE Runtime Environment (build 1.6.0_22-b04-307-10M3261)
Java HotSpot(TM) 64-Bit Server VM (build 17.1-b03-307, mixed mode)

hoge@hoge-MacBookAir:~$ pear -V
PEAR Version: 1.9.1
PHP Version: 5.3.3
Zend Engine Version: 2.3.0
Running on: Darwin hoge-MacBookAir.local 10.6.0 Darwin Kernel Version 10.6.0: Wed Nov 10 18:13:17 PST 2010; root:xnu-1504.9.26~3/RELEASE_I386 i386

SeleniumRCをダウンロードしよう

SeleniumRCを動かすためにJavaのバージョンは1.5以上が必要です。
先ほど調べたとおり、1.6.0_22なので問題ナッシング。
SleniumRCのダウンロードはこちら→http://seleniumhq.org/download/



selenium-remote-control-1.0.3.zipをダウンロードして、お好きなディレクトリで解凍してください。
(ターミナルから実行しやすい場所がいいと思います)

自分は

/Users/hoge/SeleniumRC_remote_control

のようにSeleniumRC_remote_controlというディレクトリを作成し設置しました。


PHPUnitをインストールしよう

次、PHPUnitのインストールをします。(詳しくはこちら:http://www.phpunit.de/manual/3.5/ja/installation.html)
PHPUnit3.5はPHP5.3.3以上を推奨しています。
PHPUnitはpearでインストールします。

pearのチャンネルサーバーの登録

# pear channel-discover pear.phpunit.de
Adding Channel "pear.phpunit.de" succeeded
Discovery of channel "pear.phpunit.de" succeeded

# pear channel-discover components.ez.no
Adding Channel "components.ez.no" succeeded
Discovery of channel "components.ez.no" succeeded

# pear channel-discover pear.symfony-project.com
Adding Channel "pear.symfony-project.com" succeeded
Discovery of channel "pear.symfony-project.com" succeeded

これでチャンネルサーバーからPHPUnitのパッケージをインストールすることが出来ます。
さっそくインストールをしましょう。
# pear install phpunit/PHPUnit

hoge@hoge-MacBookAir:~$ phpunit -v
PHPUnit 3.5.6 by Sebastian Bergmann.

こんな感じでとくに問題なくセットアップできました。
インストールするバージョンによってはpearの本体の依存関係や、他のパッケージが必要な場合があるので環境を整えてみてください。

・PEAR本体のアップグレード
# pear upgrade PEAR
・依存パッケージをまとめてインストール
# pear install -a phpunit/PHPUnit

さっそく動かしてみよう

SeleniumRCのサイトにサンプルコードがあるので(PHP版は無いw)、それを参考にGoogleアクセスして「hello world」で検索し、titleに「hello world ‐ Google 検索」と表示されるか確認するテストを書いてみました。

set_include_path(get_include_path() . PATH_SEPARATOR . './PEAR/');
require_once 'Testing/Selenium.php';
require_once 'PHPUnit/Framework/TestCase.php';

class GoogleTest extends PHPUnit_Framework_TestCase
{
    private $selenium;

    public function setUp()
    {   
        $this->selenium = new Testing_Selenium("*firefox3", "http://www.google.com");
        $this->selenium->start();
    }   

    public function testGoogle()
    {   
        $this->selenium->open("/");
        $this->selenium->type("q", "hello world");
        $this->selenium->click("btnG");
        $this->selenium->waitForPageToLoad(10000);
        $this->assertRegExp("/hello world - Google 検索/", $this->selenium->getTitle());
    }   

}


Seleniumサーバーを起動して
hoge@hoge-MacBookAir:~/SeleniumRC_remote_control$ java -jar selenium-server-1.0.3/selenium-server.jar

作ったテストコードを実行します。
hoge@hoge-MacBookAir:~/SeleniumRC_remote_control$ phpunit test_google.php
PHPUnit 3.5.6 by Sebastian Bergmann..

Time: 8 seconds, Memory: 4.75Mb

OK (1 test, 1 assertion)

Firefoxがかってに動いた!!
アサーションもOKだし、やったね!