ちょっと強引なSelenium IDE の活用法
発注業務を半自動で実行できる支援システムをSelenium IDE 使ってテスト的運用中ですが、結構使えますねこれ
まあ、ちょっと強引なやり方でやってまして、、、
と言ったプログラム言語と組み合わせて制御する方式があることがわかる
が、実はどれもちょっと勉強しないと使えない自分w
ということでとりあえずSelenium IDEで簡単に済ませようというのですが、ちょっと強引にawkとm4を使ってやろうと、、、、、
Selenium IDEでのテストケースは単なるhtmlなので、最初に記録させたテストケースをテンプレートにして、外部プログラムで強引に変数やらループ構造を展開させたhtmlを出力させ、それをselenium IDEで実行させればよい、との発想
テストケースのhtmlには変数を持たせられるし、javascriptの埋め込みもできるらしく、またループ構造も工夫すればできるようですが、そういうプログラム的な要素は一切廃止して、単にデータとして扱うことに徹する方針(その方が現時点の習熟度では楽なので)
以下どんな感じか簡単に説明
こんな発注データをkabucom3a.csvとして準備
これを食わせると、m4マクロ定義ファイルを吐くawk script を作成
kabucom3a.awk
-------------------------------------
BEGIN { FS="," }
NR>1 {
close(out) # ファイルオープンの数に限りがあるので都度close
out = sprintf("./kabucom.m4/%s",$1)
printf("define(`_mmmm_',`%s')\n",$1) > out
printf("define(`_kb_',`%s')\n",$2) > out
printf("define(`_en_',`%s')\n",$3) > out
}
END{}
-------------------------------------
awkガナス(6) – 複数ファイルへの出力(リダイレクト機能) — SOUM/misc
(↑ここを参考にしました)
これにより例えば
define(`_mmmm_',`1757')
define(`_kb_',`3100')
define(`_en_',`2')
こんなやつができます
このマクロを使ってテストケースを作成するコマンドがこんな感じ
kabucom3a
-----------------------------------
rm ./kabucom.m4/*
rm ./kabucom/*
cat ./kabucom3a.csv | awk -f ./kabucom3a.awk
cat ./kabucom3a.html.head > ./kabucom/all.html
for var in `ls ./kabucom.m4`
do
cat ./kabucom.m4/$var kabucom3a.html > tmp.txt
m4 tmp.txt >./kabucom/$var.html
cat ./kabucom.m4/$var kabucom3a.html.tr > tmp.txt
m4 tmp.txt >>./kabucom/all.html
done
cat ./html.end >> ./kabucom/all.html
----------------------------------
で出力された./kabucom/all.html をselenium ide で実行すれば、発注作業が半自動で、、、
かなり便利
こういう方法でよければ、プログラム言語は何でもいいので、最終的にはシグナルを出しているR言語やC言語がselenium ide のテストケースを出力するというのも可能
今のところ発注前にいろいろ確認したいので、一度エクセルでいろいろやってからcsvファイルにしてるけど
ここまでの説明???な感じでしょうけどw
kabucom3a.html.trの中身が
----------------------------
<tr>
<td>waitForElementPresent</td>
<td>name=Keyword</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>name=Keyword</td>
<td>_mmmm_</td>
</tr>
<tr>
<td>clickAndWait</td>
<td>css=input[type="submit"]</td>
<td></td>
</tr>
<tr>
<td>type</td>
<td>id=InputBuyModel_Quantity_Value</td>
<td>_kb_</td>
</tr>
<tr>
<td>click</td>
<td>id=InputBuyModel_WebOrderType_Value_PMSASHINE</td>
<td></td>
</tr>
<tr>
<td>select</td>
<td>id=InputBuyModel_PlusMinusSashine_TriggerPriceSign_Value</td>
<td>label=-</td>
</tr>
<tr>
<td>type</td>
<td>id=InputBuyModel_PlusMinusSashine_TriggerPriceRelative</td>
<td>1</td>
</tr>
<tr>
<td>select</td>
<td>id=InputBuyModel_PlusMinusSashine_UnderOrOver_Value</td>
<td>label=以下</td>
</tr>
<tr>
<td>click</td>
<td>id=InputBuyModel_PlusMinusSashine_AfterHitFrontOrderType_Value</td>
<td></td>
</tr>
<tr>
<td>select</td>
<td>id=InputBuyModel_PlusMinusSashine_AfterHitPriceSign_Value</td>
<td>label=-</td>
</tr>
<tr>
<td>type</td>
<td>id=InputBuyModel_PlusMinusSashine_AfterHitPriceRelative</td>
<td>_en_</td>
</tr>
<tr>
<td>click</td>
<td>id=InputBuyModel_DelivType_Value_Oazukari</td>
<td></td>
</tr>
----------------------------
こんななってるのだけど
赤字のところがm4で置き換えられる仕組み
これで、変数とかを使わず、csvの中身を展開したテストケースが作成できるw
やっぱりわかりにくいですかね?