『実践Selenium WebDriver』(オライリー)


実践 Selenium WebDriver

実践 Selenium WebDriver



 待ち焦がれた一冊!と紹介したいところですが、実は私は全然待っていません(笑)。
以前より名前は知っていたものの、最近になって突如、興味を持ち始めて色々調べていた矢先に、本書(翻訳書)の出版を知りました。
ジャストタイミング! 情報収集していたら、「あなたが探しているのは、この金の本ですね?」と差し出された気分。正直者の私は「いえ、私が探しているのは、この緑の本です」と。


 私が Selenium 等のテストツールに興味を持っている理由は、以前の日記に書きました(http://d.hatena.ne.jp/sakaik/20140910/hello_selenium )。そんなお恥ずかしいレベルからのスタートと目標地点設定ですが、それでも、本書を読みながら得たものが、たくさんありました。
 本当に、こういう情報が日本語で、書籍としてまとまった形で手に入るのは、ありがたいものです。


 まず、Web上で情報収集していると、どれが今も生きている情報なのかを判断しにくいのです。Selenium は、とくに名前の付け方がややこしく、「Selenium なんちゃら」がたくさんあって、どれを使ったら良いかが分からず、まずつまづいていました。
 このことは、本書の「訳者まえがき」を見て、スッキリしました。まえがき見ただけで「欲しかった情報、これだよ!これ!!」と言っている自分が、ちょっと滑稽ではありましたが。 先は、長い。長すぎる。 Seleniumの歴史や構成、基本的な使い方までは、1章を読むことで、おおむね把握できました。


 本書には、Selenium WebDriver (いわゆる Selenium 2)の使い方に関するあれこれが、ぎゅっと詰まっています。「今の自分には不要だな」というものも含めて、このツールでこんなことができるんだ、という全体像を把握するのにも、ぴったりでした。
 この手のツールを使うには、まずは「オブジェクトを特定して」「そのオブジェクトに対してアクションを指示する」ことができるようになりたいわけですが、そのあたりもバッチリ。マウス操作やスクリーンショット、ターゲットウィンドウの切り替えなどの基本操作について、バッチリ解説してあり助かりました。
 イベント処理やIO、リモート処理やモバイルなどは、私はすぐには使う予定はありませんが、Selenium WebDriver の幅を知る上で役に立ちました。



 実際に操作してみてのハマりどころや感想など:
・最初のテストケースが動作しなくてハマりました。Firefoxを、標準でないパスにインストールしていることが原因でした。環境変数PATHに Firefox.exe へのパスを追加し、Eclipseを再起動して、テストケースを実行できるようになりました。
Firefox のプロファイルを見るために -p オプションを着けて Firefox.exe を起動しても、設定のための画面が出てこない。しばらく悩んで、続きを読んだら、、、「実行中のFirefoxインスタンスはすべて終了しておく必要があります」って、、先に言ってよ!(笑)
Selenium IDE から WebDriver形式のファイルを出力できることを発見! オブジェクト名などを調べて記述していくのが面倒くさいなぁと思っていたので、「IDEで操作を記録して、javaを吐き出させる」という流れが、ラクそうです。
YUI(先日、終了が発表されたアレ)を使用しているのですが、ダイアログだと思っていたのが、実はダイアログじゃなかったことを認識。SwitchTo()で取れなくて悩んでいました。


 あと、Assert関係の機能は Selenium WebDriver には無いそうで、言語側(今回私が使っているのは java)の処理でゴリゴリ書くものだそうです。このことも、知らないといつまでも疑問に感じるポイントですから、本書に明記されていて助かりました*1


 こんな感じで、一気に本書を読み、一気に色々試してみましたが、本書がなければここまで短期間で理解したり試したりするのは難しかっただろうな、と思います。日本語書籍は、やっぱりありがたい。Selenium WebDriver を使う人であれば、一読し、そして手元に置いておくべき一冊だと思いました。


 余談ですが、とにかく情報収集したかった時に、英語の本を(Kindleで)2冊買っていました。本書を読んで少し大枠が理解できたので、改めて英語の本を見てみようか、、、、と開いた(Kindleですが)ところ、、本書の原書(英語版)でした(笑)。原書って表紙が全然違うのですね。

.

*1:これは P.7 に書かれていますが、assertTitle となるべきところ、assetTitle になってしまっていますね。次刷では直されれば