Watirでブラウザテストを自動化する
仕事で大量のURL(十数万)にブラウザからアクセスして挙動を確かめたい、という要件がありました。(例えば、htmlに不適切なJavascriptコードが含まれてないか、など。例えば。)
最初はmechanizeで適当にすまそうと思ったのですが、今回の案件はJavascriptを実行した結果を検証する必要があったので残念ながら却下。さてどうしようかと考えていたのですが、同僚の@nunaくんにWatirを教えてもらったので使ってみました。
インストール
gemで一発インストール。
gem update --system gem install watir
IEでgoogleにアクセスする
以下はIEを起動してgoogleへアクセスするコード。Watir::IE.newをするとブラウザが起動して、goto(url)を実行すると、該当のURLにアクセスします。
require "watir" ie = Watir::IE.new ie.goto("http://www.google.com/")
テキストフィールドに文字列を追加
nameがhogeのテキストフィールドにfooという文字列を追加するのはこんな感じ。
ie.text_field(:name => "hoge").set "foo"
IEを操作してhtmlを取得するので、サーバーから返却されたhtmlもjavascriptが実行された後の状態でオブジェクト化されています。なので当然javascriptが追加した文字列を取得する、ということも出来たりします。
例えばjavascriptでh1タグをappendしていたら、それもオブジェクトとして取得できました。すばらしい。