2012年9月5日水曜日

Selenium2-WebDriver 本格運用するには①

Selenium2のWebDriverを本格運用するには、カスタマイズが必要不可欠みたいだ。
なぜなら、単純にSeleniumIDEでエクスポートしたJavaファイルを実行しても実行できないから。

例えば、FireFoxで動作指せようとした場合、
JavaのシステムプロパティにFireFoxの実行ファイルのパスを設定しなければならなかったりする。

System.setProperty("webdriver.firefox.bin","FireFoxの実行ファイルのパス");

Chrome、IEでは同様にドライバのパスをシステムプロパティに設定してから
WebDriverを生成しなきゃならない。(他の方法もあるのだが似たようなもんだ)

これでは、システマティックにみんなが利用しやすくするには
独自カスタマイズをしなきゃ無理だ。
おそらく、カスタマイズして使ってくれっていうスタンスなんだろうが。



一番手っ取り早い解決は、プロパティファイルに切り出してしまう事。
以下みたいに。
webdriver.firefox.bin=FireFoxの実行ファイルのパス

そして、それをロードしたものをシステムプロパティに入れてしまえば良い。 とりあえず、僕はそうしている。

小ネタだがChromeドライバは、簡単に取得できるが最新版を取り続けていないといきなり動かなくなったりする。 特にChromeの自動更新をONにしてる人とか。

2012年9月3日月曜日

Thymeleafが気になって仕方がない

Javaでツールを作っているときに、
ツールの結果としてHTML出力って方法を僕は取りがち。(どーでもいい)

僕が取る手段は、いつも以下の2つのどちらかにしてしまう。
•XSLT
•Velocity

XSLTは、割と最後まで組むのが面倒だから本気モード以外ではあんまり利用しないかも。
JavaScriptとか埋め込むのも&&とかを&にしたりとだるいしね。。。

XSLTもVelocityも割と使われてる技術だろうし、資料もいっぱいあるし良いのだが、
まずプロト的なHTMLを作成して、それに合わせてXSLなりVMを組まなきゃダメ。
しかも修正するとなると、割と面倒だ。


そんな悩みを解消してくれそうなものがあった。
Thymeleaf 

プロトHTMLをそのままテンプレートとしても使えるらしい。
狙いは当然ながらデザイン会社にWEBデザインを委託するような開発だろう。
デザイン会社さんが作ったプロトHTMLをそのまま使っちゃえということ。

これは試してみないとなぁ。。。早めに試したいところです。

Selenium2-WebDriver

2010年8月、なんか業務が暇だったのかよく覚えてないが
WebブラウザをJavaで操作したいと思ってた。(スクレイピングネタとかだっけな…)

そのときに、ググった結果以下の2つがヒットした。
•Selenium
•WebDriver

そのときは、ちょこっとWebDriverを触って終わった。
そんで僕が、SpringやらJSFやらCassandraに打ち込んでいる1年間に、
SeleniumがWebDriverを統合しちゃってて、それを半年後に知った僕は今更打ち込み始めている。

現在のSelenium2には、大きく分けて以下があるようだ。
•SeleniumIDE
•SeleniumRC(RemoteControl)
•SeleniumGrid
•SeleniumWebDriver


SeleniumIDE FireFoxのプラグインとして提供されている、Seleniumのテストケース/テストスイーツを作成するための物だ。
これはすごく便利でWebブラウザ上のオペレーションを記録でき、その内容をそのままJavaやPHPといった多数の言語のテストケースにエクスポートが可能である。



SeleniumRCこれは、前から存在しているSeleniumのテストツール本体。 テストサーバを建てて、そのサーバに対して上記のIDEで作成したテストケース/テストスイーツを喰わせることによってテストを行う。テストサーバといってもjarを実行するだけのとても簡単な手順だった。このSeleniumRCはレポートも出してくれるのだが、僕が期待したクオリティではなかった。


SeleniumGrid SeleniumRCを複数たてて、その前にハブとか呼ばれるものを1個建てて分散させてテストを実行させるためのもの。
それ以上は調べてない。。。。


SeleniumWebDriver RC、Gridとは異なる実行形態のテストツール。 単純Javaアプリケーションでも容易に利用ができ、拡張性も高い。 WebDriverは、SeleniumRCがJavaScriptで動くのに対してWebブラウザ自体や、ドライバを介してブラウザを操作するイメージを僕は持っている。故にJavaScriptのセキュリティの壁を乗り越えたテストケースを組めるみたい。

僕が興味があるのは、WebDriver。
そして目下勉強中。。。。
困った事とか、ちょこちょこ書いていきます。

Seleniumは、業界の敵なのかもしれないが、、、
無駄なコストとも思える回帰テストを嫌がる雇い主や作業者は山ほどいるはずだ。
ただ、サクッと使いこなせるのであればもうちょっと広まってていいはず。
早めに使いこなせるようになって生き残らねば…