チュートリアル1-2
操作シナリオの作成
Gridシートに操作内容を記述していきます。
まずは1件だけ検索する場合を考え、後から繰り返し処理を入れていきます。
サイトを開く
ブラウザは自動で開くので、対象サイトのURLを入力します。
IO | TYPE | 入力オプション |
---|---|---|
IN | Browser:URL | URL:https://www.jisc.go.jp/app/jis/general/GnrJISSearch.html |
検索画面
テキストボックスへの入力
XPathの取得
JIS番号のテキストボックスを識別するため、テキストボックスのXPathを取得します。
項目 | XPath |
---|---|
検索欄 | //input[@id="label-f01"] |
Excel値をテキストボックスに入力
Excelシートの一番目のデータ(セルA2)の値を検索欄に入力します。
IO | TYPE | XPath | 列 | 行 |
---|---|---|---|---|
IN | ELEMENT:TEXT | //input[@id="label-f01"] | A | 2 |
なお、JIS番号は「JISA0001」のような形式ですが、検索欄は「JIS」部分を省略して「A0001」だけを入力する形式になっています。ただ「JISA0001」のように入力してもエラーにならず検索できますので、いったん「JIS」部分の省略は無視します。(後ほど、変数を利用してJISを取り除く作業をします)
検索ボタン
XPathの取得
一覧表示ボタンのXPathを取得します
項目 | XPath |
---|---|
一覧表示 | //form[@name="FORM2"]//div/input |
クリック
IO | TYPE | XPath | 入力オプション | Fixed | 入力値 |
---|---|---|---|---|---|
IN | ELEMENT:BUTTON | //form[@name="FORM2"]//div/input | オン値:CLICK | True | CLICK |
ボタンをクリックする場合の入力値(ON値)は「CLICK」とします。
今回のシナリオでは、検索ボタンは常にクリックしますので、わざわざクリックの要否をExcelで指定する必要はありません。よって、Fixedにチェックを入れ、入力値に「CLICK」を記述します。
結果画面
画面遷移の判定
検索ボタンを押した後、入力したJIS番号に対応する規格名称があれば、結果画面が表示されます。一方、エラーの場合は、エラー画面が表示されます。
結果画面が表示された場合のみ、規格名称を取得しますので、検索ボタンクリック後に、結果画面とエラー画面のどちらに遷移したかを判別する必要があります。
一般に画面の遷移先を識別する方法としては、
- 入力データや操作シナリオから、あらかじめ遷移先を推定する
- ブラウザに表示される遷移先のURLやタイトルで判断
- 遷移先に存在する画面要素で判断(A画面にはあるが、B画面にはない)
などがあります。
今回は、遷移先の画面要素で判断します。
画面要素の特定
ということで、結果画面にあって、エラー画面にない画面要素を洗い出します。
結果を表示するテーブルのヘッダー情報「規格番号」で判断したいと思います。
XPathの取得
項目 | XPath |
---|---|
規格番号 | //th[contains(text(),'規格番号')] |
判別条件
IF文を用いて、「規格番号」が表示されていたら、「規格名称」を取得するようにします。
Ctrl | TYPE | XPath | 入力オプション |
---|---|---|---|
IF | Element:LABEL | //th[contains(text(),'規格番号')] | 条件:表示 |
規格名称の取得
XPathの取得
項目 | XPath |
---|---|
規格名称 | //form[@id="form"]/table//td[2] |
Excelに出力
規格名称を出力シートのセルB2に出力します。
IO | TYPE | XPath | 列 | 行 |
---|---|---|---|---|
OUT | ELEMENT:LABEL | //form[@id="form"]/table//td[2] | B | 2 |
エラー画面
画面遷移の判定
エラー画面が表示されるのは、「結果画面が表示された時以外」なので、判別条件には「ELSE(それ以外)」を用います。
Ctrl |
---|
ELSE |
エラーメッセージ
XPathの取得
項目 | XPath |
---|---|
エラーMSG | //div[@class="message_"] |
メッセージ取得
取得したエラーメッセージを出力シートのセルB2に出力します。
IO | TYPE | XPath | 列 | 行 |
---|---|---|---|---|
OUT | ELEMENT:LABEL | //div[@class="message_"] | B | 2 |
IF文を閉じる
最後にEND-IFでIF文を終了します。
Ctrl |
---|
END-IF |
操作シナリオの実行
作成シナリオ
1件分の入力操作ができたので、シナリオを実行してみます。
Gridシートの内容
シナリオ実行
操作タブの実行ボタンをクリック
ブラウザが起動し、入力が始まります。
結果画面に遷移後、操作シナリオが終了します。
ノーマルケースなので、4行目のIFは「True」、6行目のELSEは「False」になっています。
Excel結果
セルB2に結果が出力されています。
エラーケースの実行
ExcelシートのセルA2「JISX0001」はノーマルケースのデータなので、Gridシート6行目のELSEは「False」となり、7行目のエラーメッセージの取得を行いません。
エラーデータであるExcelセルA4「JISX10000」のデータを使用して、エラーケースの処理を確認しておきます。
入力データにセルA4、出力先にセルB4を指定する
Gridシート列ヘッダー「行」の右側にある「▼」を2回おして、行番号を2→4にします。
操作の実行
操作タブの実行ボタンを押します。
ノーマルケースに比べて、終了まで時間がかかります。4行目のIF文で待機時間が発生しています。
IF文では、画面遷移後、要素の表示/非表示のチェックをしています。一方、通信速度の問題などで、画面遷移後に次の画面が表示されるまでにタイムラグがあると、ノーマルケースであっても、その間は要素が表示されません。
よって、要素が表示されていない場合、指定時間(デフォルトでは10秒間)待機します。
待機時間は「オプション」ー「待機時間」ー「要素検索」の値で変更できます。
4行目のIFが「False」、6行目のELSEが「True」になっています。
Excel結果
セルB4にエラーメッセージが出力されています。