2011年10月31日月曜日

selenium-webdriverでSafariを起動

WebDriver driver = new SafariDriver();
っていつになったらできるの、、、

現状(Selenium2.11)の場合、Selenium-RC使えばいけるっぽい(砂場からは抜け出せそうにないけど)

Capabilities capabilities = new DesiredCapabilities()
capabilities.setBrowserName("safari");
CommandExecutor executor = new SeleneseCommandExecutor("http:localhost:4444/", "http://www.google.com/", capabilities);
WebDriver driver = new RemoteWebDriver(executor, capabilities);
 
こんな感じ。
このペースだと年内に2.14ぐらいまで出そうな雰囲気 
 
追記:こんな感じで出来るみたい。 
WebDriver browser = new RemoteWebDriver(
              new SeleneseCommandExecutor(
                            new DefaultSelenium("localhost",
                                                4444,
                                                "*safari",
                                                url)),
                        new DesiredCapabilities()); 
 
追記
selenium2.21から 
WebDriver driver = new SafariDriver(); 
できるようになった。

WebDriveとSeleniumコマンド

Selenium selenium = new WebDriverBackedSelenium(driver, baseUrl);
こんな感じでSeleniumクラスを生成すると
 
selenium.open("http://www.google.com");
selenium.type("name=q", "cheese");
selenium.click("name=btnG");
のようにseleniumのコマンドがそのままjavaで実行できてたいそう便利そうである。
 
いままで苦労しながらwebdriverクラスを使用してごちょごちょ作っていたのが非効率に感じてしまう。
しかしながら
・遅くなる可能性がある
・すべての動作(Seleniumコマンド)を網羅しているわけではない
・ぶっちゃけあまり複雑なことはできない

らしい、あくまでselenium-webdriverとの下位互換用なわけでした。

2011年10月26日水曜日

selenium2のsafari対応

他のブラウザ通り
new SafariDriver();
的なことをすればsafari が起動するのかと思いきや、全くそんなことは無かった罠。
ソースだけはネットに上がっているので、勝手にコンパイルして使ってくれというスタンスか。

試しにIphoneDriverなるものを試したところ、強制exception。
前途多難ですな。

2011年10月24日月曜日

Subversion

Subversionをコマンドを使って操作する。

注意しなければいけないのは、どうやらGUIベースでチェックアウトを行ったフォルダはコマンドではupdateが実行されないということ(なんでかは分かんない)

コマンドで
svn checkout {svnアドレス} {チェックアウトしたい場所} --username {ユーザ名称} --password {パスワード}
とした後
svn update
とすれば更新がかかるようになる。

2011年10月22日土曜日

selenium-webdriverと対応ブラウザ

selenium-webdriverの中のコードを見ていく。

ブラウザ一通り対応しているよう。
ただ、やはりブラウザ自体の問題か、多少の動作の違いが見受けられる。

selenium-webdriverを使いIEでテストコードを実行する際、起動時に

WebDriver driver = new InternetExplorerDriver()
てな感じでWebDriverのインスタンスを生成する。

FireFoxも同様に
WebDriver driver = new FirefoxDriver()
とするのだが、firefoxだけコンストラクタにて実行exeの情報を持ったパスを指定する機能がついている。

おそらくひとつのクライアントに複数のバージョンをインストールできるFireFoxとできないそれ以外のブラウザからくる特性だと考えられる。

用はIE8とIE9の自動実行テストをどっちもやりたければ環境二つ用意しなければいけないということ。

補足:やろうと思えばChromeもIEも一つの筐体に複数バージョンインストールができるのだが、IEの場合は特にレジストリの変更の必要があるので、お勧めしない。

どっち道selenium-webdriverが対応していないので、環境でカバーする必要がある。

WEBアプリケーションのテストコスト削減とselenium-webdriver

Seleniumと出会ったのは9月のこと、調べていくうちにWebDriverやselenium-webdriverのことを知る。
詳細は ググればいくらでも出てくるので省略。
気持ち悪いぐらいぬるぬる動く。どうやらクリックイベントやテキストの入力イベントだけではなく それに伴うマウスの移動もエミュレートしているみたい。

開発者ブログを見たが、今後はSelenium→selenium-webdriverに移行していくよう。

selenium-webdriverはseleniumと違い、WebDriverベースでテストケースを表現する。

具体的にいうと
Selenium.click("hogehoge")がseleniumの実行コードで
driver.findElement(By.id("hogehoge")).click()がselenium-webdriver
junitを使用しての連続実行やassert系関数もつかえるんで、便利。
 
とりあえず詰まったところを書いていこうと思う。