サイト内検索
Translation here

[Selenium][IDE]ブラウザテストとコマンドテストを連携させる[firefox]

お疲れ様です、野村です。
こんなことにハマるのか、と思ってしまった事案にどっぷり浸かり込んでしまったので、別プロジェクトで同じことをしないためのメモを残しておきます。

今日はホントひどい。

本日の議題

やりたいこと

batのアイコンをダブルクリックしたらブラウザテストとコマンドテストが終了していること

誰もが一度は考えたことがあるんじゃないかな、と思います。
ユースケースは、ブラウザ上の操作をしたらコンフィグが切り替わる、というよくあるやつです。
PHPとか触ってるとよく直面しますね。
こちらはiniなりを書き換えた時にブラウザで開くと初期値が変わっていることを確認するケースとかでしょうか。
どちらにも応用が利きます。

課題整理

さて、やらなければならないことが非常に多いです。
もし開発者の方がこの方法を見て「すごい!」となっても、使わないことをオススメします。
一般的に、労力のわりにコストが見合わないからです。

逆に、軽微なものであったりする場合が多いので、部分的に切り出して使うのが良いでしょう。
私見ですが、おすすめ度も載せておきます。

ブラウザ操作の自動化

これはいつもお馴染みのSeleniumで。IDEかBuilderかはお好みでどうぞ。
私はBuilderを愛してしまったのでその話ばっかしますが、
基本的にIDEの方が機能面でも使い易さでもリファレンスでも優位なことが多いです。

やることは簡単。
アドオンを入れたらブラウザの操作の部分だけをやって記録してファイルに保存をします。
これだけでとても価値の高いものが出来上がります。

エビデンスを残すなら、指定がない限りウィンドウサイズを画面いっぱいにしましょう。
開発中は小画面で見る事が多いので、レイアウト崩れに気付きにくいです。

コマンド操作の自動化

基本的にはbatです。SSH(ターミナル系。TeratermとかOpenSSHが多いかな?)があればshell scriptを使ってください。

ブラウザ操作の前にやるものや、操作後に見に行くとかですね。
エビデンスを残す時は間違ってもファイルの一部切り出しとか、比較後の結果だけを置くことはせず、ファイルを加工する前の状況を置きましょう。
また、無尽蔵にファイルが増えるような作りになることが多いので、可能であればファイルサイズを確認して空き容量が少なくなったらSendMailとか気づく仕組みを作っておきましょう。
簡易なものなら都度dfとかやってください。
ただし、ログを標準だけにしちゃうとバグを再現できなくなった時(修正した後)に調査ができなくなるため危険です。

【本題】これらをくっつける

Selenium IDEとbat

楽勝です。
  1. Java入れて
  2. SeleniumServer入れて
  3. PATH通して
  4. テスト作って
  5. BAT作る

Selenium IDEとSSH

これがBATじゃなくてSSHを使っていたらちょっと厄介。
とはいえ、大多数がコレでしょう。

BAT作る部分が下のようになります。
  1. BAT作る
  2. SSHコマンドを作る
  3. shellを作る*1
工程的にはこれだけ。
ただし、どうやってSSHコマンドを発行するのか。ここにぶち当たります。

Selenium BuilderとSSH

私がハマったのがコレです。
先に言いますが、PC初心者の方と英語アレルギーの人は諦めましょう。
ここではSelenium初心者で英語に抵抗がない一年目プログラマーさんレベルを想定しています。

一応、このブログで解決までの道筋を書きますが、英語アレルギーの人はこの機会にアレルギーを克服してみましょう。
私の場合、試行錯誤の末にこの通りにやれば出来たので、それ以外の問題はケースバイケースに対応できると思います。

*1 : なくても良いけどあったほうが理想。

SSHの自動化

やることはコレ!
  1. 接続環境を作る
  2. 鍵を作る
  3. BATでターミナルを起動させる
  4. BATから呼び出した環境でSSH認証をする
前提として、ターミナルか何かでSSH接続が可能な状態にあることです。
sshd側でuse pamとか接続制限とか面倒見切れません。

接続環境を作る

上で前提としてターミナルとか使えるようにしておいてね、と書いてる割にはこういう項目は存在させます。
繋がらない事には話にならないので、まずは普通に接続しましょう。

鍵を作る

やる事は手動で接続してknow listに追加するぐらい。
コマンドラインでsshとかやると英語でなんか聞かれてyes/noってなるアレです。
表示内容に違いはありますが、言ってることは大体同じです。

BATでターミナルを起動させる

ターミナルのパスが分かればいいです。が、実際は実行したいファイルまでのパスと、実行させるアプリのパスの双方が必要になるでしょう。
もしコマンドを実施させるならそれらも必要になります。

BATから呼び出した環境でSSH認証をする

とりあえず実行してみましょう。
batで実行した時とターミナルで実行したものが違う、という事がないようにすれば、基本的にここはパスできるはず。
あるいは、鍵の情報がないとか設定側の問題もあります。
スクリプトで書いているなら、それらの一行ずつの意味を正しく理解しましょう。
大体の場合、コピペでは動かないです。

ここまでやってようやくつなげるようになります。
が、SeleniumBuilderはまだ起動できないので気を付けて。

128
OK キャンセル 確認 その他