📝

[他にも応用できます]SeleniumIDE・Builderのイケてないキャプチャ機能を改修する

2023/08/29に公開

https://qiita.com/items/21c9dabe898dfebe2a5c


お詫び

Qiitaの元記事にて、区切り線を「---」で書いている場所があり、これがZennの記法に干渉して一部うまく表示できない記事がある事を認識しています。
全ての記事を精査しきれていないため、お手数ですがお見かけの際は教えていただけると大変喜びます。


画面だけを見てバリデーションできたらいいんですが、Seleniumの画面以外を見る必要があるテストケースの場合に使えます。
Seleniumのキャプチャ機能はあくまでもSeleniumが持っているページオブジェクトの情報しか見れないんですよね。
それってどうなの?というシーンがあった時に使えるテクニックです。

前提条件

マルチモニターで実施しないでください。winshotの仕様(?)でスクリーンショットが撮れません。
PrintScreenキーとはまた違うのかな、という気がします。

環境

Selenium側

Firefox46.0.1
SeleniumIDE2.1.1.1-signed
SeleniumBuilder2.3.5
(アウトプットできればなんでもいいです)

環境側

windows系(検証環境はwindows10)
FWatch:ファイルの出力を監視してコマンドを実行します
winshot:今ディスプレイ(モニター)で見えている画面を撮ります

ダウンロードなど

この辺からどうぞ
FWatch ファイル監視について
窓の杜

実施手順

まずはサクッとインストールしてください。
インストール先はProgram Files...ではないほうが良いです。半角スペースがエラーの原因になります。

FWatchから設定します。
まずは開きましょう。アプリを間違えないでください。

fwatch.png

追加ボタンをポチッと

fwatch_add.png

監視するフォルダにseleniumでcaptを撮るフォルダ
アプリケーションのパスに実行するコマンドを入れます。
ここではbatですね。

batでwinshotを実行する

batの中身はこれです。

C:\winshot\WinShot.exe -J -D -X

参考

Windowsでコマンドを使って画面キャプチャする方法

使ってみよう!

とりあえず、なんちゃってで実施しましょうか。
監視フォルダに設定した場所に新しくファイルを作るなりコピーするなりやってみてください。
そうすると、FWatchが動いてアプリケーションのbatをキックし、winshotを実行すると思います。
winshotで取得したファイルはwinshotのインストールフォルダに保存されます。

seleniumで連携しよう!

手作業でファイルを置きましたが、今度はSelenium側の設定をしましょう。
これは敢えて手順とか書きません。出来ますよね?

ファイルがスタックされる

WSxxxxxx.JPGでどんどんファイルがたまってくるんですが、なんのこっちゃ分からんです、という状況になります、たぶん。
bat側にテストファイルを理解できるようにしてあげるのが良いでしょう。

Atest_EOF.pngみたいな名前でSeleniumからキャプチャファイルを吐き出して、batはファイル名にEOF.pngが含まれていたら、今まで取得したものをまとめてフォルダ管理する、とか出来るといい感じになります。
フォルダ名はとりあえずAtest_YYYYmmddHHMMSSとかにすると重複することがないでしょう。
(本当はいいネーミングが欲しいんですが、とりあえず暫定で)

では、やってみましょう

batの中身を色々といい感じに改修していい感じに見せてる例
(全部echoでごまかしてますが、こういう運用とかはいいと思います)

command.png

なんかコマンドエラーになってますが、特に意味はありません。

まとめ

今回はSeleniumで運用しましたが、FWatchからのwinshotは汎用性高いです。
Linuxシステムで.lockファイルとかつくる仕組みは結構ありますが、考え方はそれに近くて、ファイルを検知したらキックするというだけでかなり価値が高いのではないでしょうか?

windowsでもcronみたいな事を手軽に出来るというのはなかなかない気がします。
この方法もいいですが、もっとスマートな方法もありそうな気がします。

読了後いいね!をお願いします。

どれだけの方に読んでもらっているか知りたいので、お手数をおかけしますがご協力いただけると嬉しいです。

GitHubで編集を提案

Discussion