[2017年時点] Selenium IDE のまとめ

# はじめに
「SeleniumIDE」で検索するといろいろな知見が見つかりますが、2016年時点で有効な情報を自分の整理も含めてまとめて~~みます~~いました。

**が**
**が**
**が**


#2017年8月！
- このタイミングでリリースされた　FireFox55から　SeleniumIDEは動かなくなりました。詳しくはこちらの記事にあります　。[まだまだ使うぞSelenium IDE](http://qiita.com/hiroshitoda/items/f01cf25fd972f03c24ed)

- 上記の記事にもありますが、選択肢はあまりなく、FireFox54以前にバージョンダウンするか ESR版をインストールするといったところが現実的なところ。
- Selenese の生成ができなくなるとなると　[selenese-runner-java](https://github.com/vmi/selenese-runner-java)こちらもこれからどうされるのか気になるところ


##これからどうしよう・・・

- 　公式の作成ではないですが　Chromeで動くIDEがこれ。
[Kantu for Chrome plus Selenium IDE Light](https://a9t9.com/kantu/web-automation/chrome)

- 下記にある通り　「Selenese」に対応しています

> Kantu for Chrome plus Selenium IDE Light (Link goes to Chrome Web Store)
Web testers, please note: While Kantu supports the most commonly used "Selenese" commands of the Firefox Selenium IDE for Firefox, it is only a Selenium IDE Light. It is not intended as full replacement or port of the Firefox Selenium IDE. Our main focus is ease of use, good recording and reliable playback. That said, we plan to add support for additional commands with the next updates.

- 以下機械翻訳

> KantuはFirefox用のSelenium IDEの最も一般的に使用される "Selenese"コマンドをサポートしていますが、Selenium IDE Lightだけです。Firefox Selenium IDEの完全な置き換えまたはポートとしては意図されていません。私たちの主な焦点は、使いやすさ、良い録音と信頼性の高い再生です。つまり、次の更新で追加コマンドのサポートを追加する予定です。


-　機能的にはまだまだ「Light」です。


　SeleniumIDEの利用シーンを考えてみると、「記録したものを再生してテストを自動化する」はもちろんですが、ロケーションを取得するのに使用し、WebDriver版で使用するために、エクスポート時にフォーマット変換している、というのもあるのですが、これはそういった機能はまだまだないです。　記録・再生はできないとしても　Firefox版のフォーマット変換機能が動いてくれれば、迂回もできると思うのですが・・・　

- ロケーションの取得だけを目的とするのであれば、もう少し選択肢はありますが、それはまた別の機会に・・・

##公式採用
SideEX　というアプリを　forkして公式に開発が進んでいるようです。
[SideExはSeleniumIDEの後継？](https://qiita.com/gluelan2013/items/c21b1a186bc5e56523ee)


## え？
[SeleniumBuilder](https://github.com/SeleniumBuilder/se-builder/network)

-　息して・・・・る？？？

#とはいえ・・・

- 環境を維持してSeleniumIDEを使われている方もいると思うので、過去の記事も残しておきますね。

----
#以下２０１６年時点の記事になります

# お約束
このツールは　FireFoxのプラグインです。用途は、ブラウザ操作によるテスト自動化ですが、ブラウザで行う定型作業であれば、手動操作の代替化が可能です。


## 手動操作の代替化
たとえば　Googleスプレッドシートなどには　GASなどのスクリプトがありますが、JavaScriptの知識が必要となりますが　SeleniumIDEであれば自動記録ができるのでそういった知識は一切不要です。

## テスト自動化
なお、テスト自動化を進めていくには以下の見極めが必要です

- 何ができるのか
- 何ができないか
- 何を自動化したほうがよいか
- 何を手動でやった方がよいのか

この辺りを見極めるに「とっかかり」としての導入に真価を発揮すると思います。


[関連書籍  Selenium実践入門](http://zpr.io/E2iJ)
[関連書籍  システムテスト自動化 標準ガイド](http://www.shoeisha.co.jp/book/detail/9784798139210)
これらの書籍が手元にあると先々の指針になると思います。



# インストール
2016/05/30　時点での最新バージョンは　2.9.1 になります。
（[リリースノート](https://github.com/SeleniumHQ/selenium/wiki/SeIDEReleaseNotes)では、2.9.0 ですが、2.9.1はMozillaのデジタル署名が付与されたものになります。）

インストールにはFireFox Addonの公式からインストールとなります。

こちらに詳しく書かれています
[Seleniumの薄っすい話6:俺と最近のSelenium IDE](http://qiita.com/hiroshitoda/items/ac4330e3c279f4b40b4d) (@hiroshitoda　さん)

公式からの導線は　[公式ダウンロードサイト](http://www.seleniumhq.org/download/)真ん中あたりにあります（かつてはページのトップにリンクがあったんですが・・・）

注意点！！
FireFoxのバージョンアップ（[2016 年 の Firefox のリリースサイクルに関するアップデート](https://www.mozilla.jp/blog/entry/10527/)）には注意が必要です。FireFoxの内部で動くAdd-on のため対応したバージョンとずれるとスクリプトが動かなくなる場合があります。動かなくなった場合はバージョンを戻して動作を確認してみましょう。

# 基本操作
SeleniumIDEをブラウザメニューから呼び出したのち、記録ボタン（パネル上の赤丸）を押して目的のサイトでテキスト入力、ボタンの押下、リンクのクリックなどを行えば、スクリプトとして記録されていきます。
この辺りは、SeleniumIDEの根幹機能なので、どのサイトに載っている情報も変わりありません。

FireFox上で実行するため、FireFoxのアドオンである [firemobilesimulator](https://addons.mozilla.org/ja/firefox/addon/firemobilesimulator/) と組み合わせるとコンベタンのテストも可能です（まだ需要があるかは疑問ですが・・・）



# プラグインについて
公式のページにも　SeleniumIDEの機能を拡張するプラグインが列挙されています。使い始めてみると、「これがしたい！」ということが出てくるので、探してみるとかゆいところに手をとどかしてくれるものがあったりします。

2013年の記事ですが説明されているのがこちら
[Selenium IDE おすすめプラグインまとめ](http://blog.trident-qa.com/2013/06/selenium-ide-plugins/)　(外部リンク）

## Selblock
SeleniumIDEのプラグインで有名（？）なのがこれ。
標準コマンドにない　ループや、条件分岐などが可能になるほか、外部ファイルからデータを読み込ますことが可能になるため下記の記事あるような　DDTが可能になります。

[SeleniumIDE×SelBlocksを使ってXMLでDDT！](http://qiita.com/____rina____/items/245d22250426f289b841)　（@____rina____ さん)

拡張されるコマンドについては[公式のドキュメント](http://refactoror.wikia.com/wiki/Selblocks_Reference)で確認できます。

インストールは　[FireFox Add-on](https://addons.mozilla.org/en-US/firefox/addon/selenium-ide-sel-blocks/)から行います。

## Project ICKX Selenium-IDE User Extension
機能の豊富さであればこちらのプラグインも負けていません。

[Project ICKX Selenium-IDE User Extension](http://wkbd.ickx.jp/se/) (外部リンク)

こちらは　エレメントの取得、検証コマンドなどが拡張されています。

インストールは、サイトよりダウンロードした　JavaScriptファイルを　Selenium
IDEのオプションパネルより読み込ませます。[公式の説明-日本語訳](http://oss.infoscience.co.jp/seleniumhq/docs/03_selenium_ide.html#id34)

注意点として、先のSelBlockと同時には使えないとのことです。

# いろいろやってみたくなる
操作の自動記録、再実行が基本的な使い方になりますが、使っているといろいろとしたいことが増えてきます。


## テストスクリプトの記述方法
標準コマンドには操作系だけではなく検証系のコマンドも用意されています。が、データの加工（たとえば、テスト実行時に反映される動的データに対応したい場合など）を行う場合などは　getEvalコマンドを使用すれば　JavaScriptで記述することができます。

[Selenium IDE スニペット](http://qiita.com/gluelan2013/items/93730e4618bf490042b1)

また、下記ページは記事自体は古いのですが、大変役に立つ情報が記載されています
[SeleniumでJavaScriptを使う方法いろいろ（変数・関数などの利用）](https://colo-ri.jp/develop/2008/04/seleniumjavascript.html)　(外部リンク)


# 実行方法

基本的な機能はあまり拡張されることもないですが、このところ（この数年？）追加されているいろいろな実行方法について。


## スケジュール実行
SeleniumIDEパネルの右上に見える　時計アイコンから呼び出すことができるスケジュール実行機能です。ブラウザを起動した状態にしておく必要があることなど、いろいろと前提条件がありますが、使い方はアイディアしだいかな。

[Selenium IDE2.9.0でタイマー機能が搭載！！で、使えるのか！？](http://qiita.com/oh_rusty_nail/items/2b222c8ceab16a3acb43)　(@oh_rusty_nail さん)

## クロスブラウザ実行
SeleniumIDEはFireFoxのプラグインなので、再実行もFireFoxで実行することになりますが、同操作をクロスブラウザ（IE,Chrome）で行う方法があります。

### Selenium-Runnerによる実行

記録したテストスクリプト(Seleneseと呼びます)をコマンドラインから実行します。
この機能は　Selenium1と呼ばれる　SeleniumRC と同じ手順で実行するのですが、内部的なブラウザ操作方法が　Selenium-Core方式ではなく　WebDriver方式を使っています。

[selenese-runner-java](https://github.com/vmi/selenese-runner-java) (外部リンク)
[Selenese Runnerができるまで](https://vmi.jp/software/selenium/StudyingSelenium-01/SeleneseRunner-20140118.html#1)　(外部リンク)


### WebDriver Playback機能を使用

SeleniumIDEパネルのメニュー「オプション」-「設定」から「WebDriver」タブにある「Enable WebDriver Playback」をチェックし、テキストボックスに、使用したいブラウザを入力します

[WebDriver Playback in Selenium IDE is Here](http://blog.reallysimplethoughts.com/2013/02/18/webdriver-playback-in-selenium-ide-is-here/) 　(外部リンク)

### WebDriver形式にエクスポートして実行

記録したテストスクリプトを　他の言語に変換して実行する方法です。標準でエクスポートできる言語は下記があるので、テストツールに合わせて選択してください。（RCモードも残されていますが現時点では非推奨ですね）

- C#
- Java
- Python2
- Ruby

プラグインなどで拡張したコマンドや　getEval等で記述した　JavaScript部分は変換されないので変換後の言語で再度記述することになります。

エクスポートしたテストスクリプトの実行はエクスポート後の言語を使用したテスト実行方法になります。

これまで作成したテストスクリプトの移行にも使えますね。

# おわりに
文頭にも書きましたが、SelneiumIDEは導入コストの低いツールですので、すぐに使い始めることができます。
が、テストスクリプトの管理などを考慮すると、ある程度の規模になったタイミングで次のステージに移行することが必須になると思います。長期的なスパンで使用するスクリプトなのか短期的なスクリプトなのかを判断して　アドオンを使えばとても役に立つと思います。

# 文末にて

自筆記事以外にリンクを張らせていただいていますが、不都合等ありましたらお知らせください。すぐに対応いたします。