Selenese Runner のご紹介

1,354 views
Skip to first unread message

v...@nifty.com

unread,
Sep 9, 2013, 6:45:09 PM9/9/13
to selen...@googlegroups.com
はじめまして、岩室と申します。

某ITゼネコンでWebシステムの開発と運用をやってます。

Selenium(WebDriver)を使ったツールを作ってるので、その宣伝にきました。
(ツール自体は会社関係無しの個人プロジェクトです)

Selenese Runner Java

SeleneseというのはSeleniumIDEが直接読み書きするHTML形式のスクリプトの名
称で、このツールはSeleneseスクリプトを直接実行するインタプリタです。

要はSelenium RCの代替なのですが、何故か自分の環境ではSelenium RCが動作
しなかったので、一念発起して自作しました。(Java Formatterで生成したコー
ドを利用していたのですが、あまりにもメンテコストが高かったので)

主な機能は以下の通り:

・SeleniumIDEで作成したテストケース/テストスイートをコマンドラインから
  直接実行できます。

・Selenium IDE: Flow Control 互換のコマンドを実装しているので、多少のフ
  ロー制御は可能です。

・それなりに充実したログを出力します。

・コマンド実行毎のスクリーンショットを取ることができます。

・base URLとスクリーンショット保存先ディレクトリについては、Seleneseス
  クリプトを書き換えなくてもコマンドラインオプションで上書き可能です。

・Jenkinsに食わせられるJUnit XML形式のテスト結果ファイルを出力できます。

・Selenium RC風のHTML形式のテスト結果ファイルを出力できます。(new!)

・WebDriverベースなので、いろいろなブラウザに対応しています。現状では次
  のブラウザに対応しています。(いまいち対応が甘いブラウザもあります^^;)
  > firefox (default) | chrome | ie | safari | htmlunit | phantomjs | remote

いろいろ課題もありますので、ご意見やパッチ:-)などいただければ幸いです。

# TOEICがサイコロと勝負できる程度の英語力しか無いので、ドキュメントや
# JavaDocにも突っ込みがあると幸いです(^^;

以上、よろしくお願いします。

伊藤望

unread,
Sep 9, 2013, 8:33:16 PM9/9/13
to selen...@googlegroups.com
岩室さん

はじめまして、伊藤です。ご紹介どうもありがとうございます。

Selenese Runner Java、これは相当作りこまれているようですね。

コマンドライン実行、スクリーンショット、テスト結果レポート、などは
Selenium IDEの弱い部分かと思いますので、
その部分が補われているのは素晴らしいと思います。

こちら、利用するコマンドはSelenium IDEの形式(= Selenium RC形式)の
コマンドということなのでしょうか。
WebDriverは、Selenium RC形式コマンドの実行のために内部的に使用している感じでしょうか。


2013年9月10日火曜日 7時45分09秒 UTC+9 v...@nifty.com:

v...@nifty.com

unread,
Sep 10, 2013, 6:43:33 PM9/10/13
to selen...@googlegroups.com
岩室です。

2013年9月10日火曜日 9時33分16秒 UTC+9 伊藤望:
こちら、利用するコマンドはSelenium IDEの形式(= Selenium RC形式)の
コマンドということなのでしょうか。

はい。SeleniumIDEで作成/保存したファイルを引数に渡せば、そのまま実行できます。
seleium-server.jar -htmlSuite の代替ですね。
実装の都合上、SeleniumIDEの全コマンドをサポートしているわけではないのですが、
要望があれば、WebDriverで実現可能なコマンドなら実装する予定です。
現時点での未対応コマンド一覧はこちら:
 
WebDriverは、Selenium RC形式コマンドの実行のために内部的に使用している感じでしょうか。

はい。コマンドの多くは WebDriverCommandProcessor への翻訳を行う感じで実装されています。

# Selenium3の記事を見ると、RCがWebDriverベースになったものともろ被りするような気もします……。

伊藤望

unread,
Sep 11, 2013, 9:51:12 PM9/11/13
to selen...@googlegroups.com
伊藤です。

はい。コマンドの多くは WebDriverCommandProcessor への翻訳を行う感じで実装されています。
のexecuteメソッドが、翻訳の部分でしょうか。

># Selenium3の記事を見ると、RCがWebDriverベースになったものともろ被りするような気もします……。
CustomCOmmandProcessor.javaもSelenium内の翻訳ロジックを利用しているみたいですし、
被っている気がいたしますね。
ただ、自前でSelenium RCとWebDriverコマンドの変換ロジックを全部実装するより、
今の作りの方がずっと合理的でいいんじゃないかと思いました。

v...@nifty.com

unread,
Sep 12, 2013, 6:53:29 PM9/12/13
to selen...@googlegroups.com
岩室です。

2013年9月12日木曜日 10時51分12秒 UTC+9 伊藤望:
伊藤です。

はい。コマンドの多くは WebDriverCommandProcessor への翻訳を行う感じで実装されています。
のexecuteメソッドが、翻訳の部分でしょうか。

「翻訳」という意味では、どちらかというとCommandFactoryの方ですね。
(利用者からの突っ込みが入ったので改修中)

SeleniumIDEでは、assert/verify/waitFor系のコマンドは、Selenium CoreにあるgetXXXから自動生成されたコマンドのようです。(SeleniumIDEのマニュアル参照)
そのためかWebDriverCommandProcessor(以下WDCP)にもassert/verify/waitFor系のコマンドは存在せず、getXXX系のコマンドだけがある状況のため、内部的にはgetXXXの呼び出しへの変換および取得した結果に基づくフロー制御を自前で行っています。

CustomCommandProcessorは、WDCPの作りではインタプリタのエンジンとして扱い辛いので、直接内部構造に手を出すための苦肉の策だったりします。
(リフレクションでプライベートフィールドを読み出したりいろいろと酷い^^; executeメソッドも、WDCP#executeがpublicならもう少しやりようがあったのですが)
 
ただ、自前でSelenium RCとWebDriverコマンドの変換ロジックを全部実装するより、
今の作りの方がずっと合理的でいいんじゃないかと思いました。

そうですね。WDCPがいろいろと不十分なので、独自実装への置き換えを検討しましたが、手間がかかり過ぎて断念してたりします。

伊藤望

unread,
Sep 16, 2013, 9:54:21 AM9/16/13
to selen...@googlegroups.com
伊藤です。

Selenium WebDriverのソースの中も調べて実装されてるんですね。

> (利用者からの突っ込みが入ったので改修中)
ちなみに、利用者はけっこういらっしゃるのでしょうか。

v...@nifty.com

unread,
Sep 16, 2013, 6:22:57 PM9/16/13
to selen...@googlegroups.com
岩室です。

>> (利用者からの突っ込みが入ったので改修中)
>ちなみに、利用者はけっこういらっしゃるのでしょうか。

ほとんど宣伝してなかったので1桁ですね(^^;
ちなみに共同作業している後輩以外、日本人がいないようです(^^;

伊藤望

unread,
Sep 17, 2013, 9:39:02 PM9/17/13
to selen...@googlegroups.com
伊藤です。

知り合い以外で使ってくれている方がいるというのは、
結構すごいことだと思いますよ!しかも日本以外。

個人的には、Selenium RC形式のコマンドの他に
WebDriver形式のコマンドもサポートしてくれたらいいなあと思うのですが、
Selenium IDEが直接読み書きするHTMLは今のところSelenium RC形式だけですもんね。
Reply all
Reply to author
Forward
0 new messages