2008-12-21
Watirまとめ
ruby |
以前、仕事でWatir(http://wtr.rubyforge.org/)を使ったことがあった関係で、最近何人かの人から「使ってみたいんで情報くれ」と言われました。しばらく使ってないうちに色々変ってるみたいなので、この機会に簡単にまとめておきます。
そもそもWatirって何?
Watir(Web app testing in ruby)はWebブラウザの操作を自動化するRubyのライブラリです。入力フィールドへの文字入力、セレクトボックスの選択、リンクやボタンの押下など、ブラウザ上での操作を自動で行ってくれるので、繰り返し試験を行う場面での手間を省いてくれます。操作についてはRubyで書くため、他の機能(入力データを別ファイルから読み込む、更新前後のDBダンプを取る、画面キャプチャを取るなど)をうまく組合せれば、テスト実施の手間をかなり軽減してくれることが期待できます。
Watir自体はIE専用ですが、派生ものとしてFireWatir(Firefox用)やSafariWatir(Safari用)があります。以前はブラウザ毎にクラスが存在していたため、スクリプトの共有ができなかったのですが、最近リリースされた1.6以降ではパラメータを変更するだけで同じスクリプトで別ブラウザでも動かすことが可能になりました。
インストール
rubygemsを使います。Watirは内部でwin32-apiを使用しているので、win32-apiのバージョンが古いと一緒に落してくる場合がありますが、そのときはコンパイルできる環境を用意しておきましょう。最新版のRuby One Click InstallerでRubyをインストールしている場合は多分問題なし。
gem update --system
FireWatirを使いたい場合は、別途JSShプラグインが必要です。
1.5以前だと、モーダルダイアログを取り扱うためにはRubyのバージョンが1.8.2に限定されていましたが、1.6では解消されているみたいです。なので、古いバージョンを使っている方は最新化することをおすすめします。
サンプル
Googleの検索画面で、"ruby"と入力して検索開始ボタンを押下する。
require "rubygems" require "watir" Watir::Browser.default = "ie" # Firefoxで使用する場合は、"ie"の代わりに"firefox"と記述 browser = Watir::Browser.new browser.goto "http://www.google.co.jp" browser.text_field(:name, "q").set "ruby" browser.button(:name, "btnG").click
問題
- Firefoxでは日本語入力できない
TextField.text=で日本語を引数に渡すと、IEでは普通に通りますが、FireFoxでは文字化けを起こします。エンコーディングをどう変えてもダメです。これはJSShプラグインの問題で、マルチバイト文字を受付てくれないみたいです。回避策として、クリップボード経由でコピペする方法を書いておきます。要win32-clipboard。
require "rubygems" require "watir" require "win32/clipboard" require "win32ole" include Win32 Watir::Browser.default = "firefox" shell = WIN32OLE::new('WScript.Shell') Clipboard.set_data("気象庁") browser = Watir::Browser.new browser.goto "http://www.google.co.jp" browser.text_field(:name, "q").focus sleep 0.2 shell.AppActivate(browser.title) sleep 0.2 shell.SendKeys("^v") sleep 0.2 browser.button(:name, "btnG").click
参考サイト
- 本家サイト: http://wtr.rubyforge.org/
- 本家Wiki: http://wiki.openqa.org/display/WTR/Project+Home
英語ですが、サンプルコードや、HTMLタグとメソッドの対応表など、ドキュメントがかなり充実しています。この記事の内容もここを参考にしました。 - require クリップボード Ruby Watir テキストボックス 日本語入力 :: 電車男は電車羊の夢を見るか?
Firefoxでの日本語入力はこのブログ記事を参考に作成しました。
- 7 http://www.google.co.jp/search?hl=ja&q=mac+linux+デュアル&lr=&aq=2&oq=mac+linux
- 6 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&hs=p1z&q=mac+linux+デュアルブート&btnG=検索&lr=lang_ja
- 6 http://www.google.co.jp/search?hl=ja&lr=lang_ja&client=firefox-a&rls=org.mozilla:ja:official&q=ubuntu+mac+デュアルブート&revid=470490895&sa=X&oi=revisions_inline&resnum=1&ct=broad-revision&cd=9
- 4 http://bookmarks.yahoo.co.jp/toolbar/showpopup
- 4 http://d.hatena.ne.jp/dokonodareo/20081103/p1
- 4 http://www.google.co.jp/search?hl=ja&lr=&q=mac+linux+デュアルブート&revid=303503556&sa=X&oi=revisions_inline&resnum=1&ct=broad-revision&cd=3
- 4 http://www.google.co.jp/search?q=mac+linux+デュアルブート&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
- 3 http://d.hatena.ne.jp/atkatanto/20081222/p1
- 3 http://www.google.co.jp/search?hl=ja&safe=off&client=firefox-a&rls=org.mozilla:ja-JP-mac:official&hs=HQz&q=osx+rEFI&btnG=検索&lr=lang_ja
- 3 http://www.google.co.jp/search?q=Watir+google&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox