2011年10月12日水曜日

Seleniumを使ってみた その2


前回は導入しただけなので、引き続き、Seleniumを使ってみる。

まずはWebDriverのドライバ(ややこしいな)を選ぶ。
大雑把に言ってしまうとWebDriverは、ブラウザの名前。
Firefox, IE, Chrome, Opera, iPhone, Android, それにHtmlUnitというのがある。
(2011年10月12日現在では、Opera, iPhone, Androidは使用不可)
例えば、Firefoxのドライバは、Firefoxをブラウザとして使用してテストする。
IE, Chromeもその名のとおり。
HtmlUnitというのはサーバから返されるHTML文書を解析して動くらしい。
テキストだけなのでやりやすいけど、実際の画面は見えないし、「本当にIEで動かしたらどう見えるか?」は分からないのが欠点。
でも、Rubyではサポートされてない…。

使い方は
driver = Selenium::WebDriver.for :<ドライバ名>
とすればロードされる。

テストしたいページを開くには
driver.get
となる。

さて、例えばログイン画面が出てきて、ちゃんとログインできるかテストするにはどうするか?
そんな難しい話ではなく、HTMLエレメントの名前やらIDを使って指定すればいい。

まずはエレメントを探す。
id = driver.find_element :name => "username"

そのエレメントに値を入力するには
id.send_keys <ユーザ名>

パスワードも同様に
pass = driver.find_element :name => "password"
pass.send_keys <パスワード>

でフォームの内容を送信。
pass.submit

divのcontentクラス内のh3を取得(10秒だけ待つような設定)
wait = Selenium::WebDriver::Wait.new(:timeout => 10 ) #10 秒
begin
  result = wait.until { driver.find_element(:xpath => "//div[@class='content']/h3") }
ensure
  driver.quit
end

これでassertとかすればよさそう。

Selenium 2.0は便利だけど、ドキュメントがまだまだ整備されていないのが残念。
これからどんどん増えることを希望。

さらに続きます。

0 件のコメント: