チュートリアル1-2

2022年12月9日

操作シナリオの作成

Gridシートに操作内容を記述していきます。
まずは1件だけ検索する場合を考え、後から繰り返し処理を入れていきます。

サイトを開く

ブラウザは自動で開くので、対象サイトのURLを入力します。

IOTYPE入力オプション
INBrowser:URLURL:https://www.jisc.go.jp/app/jis/general/GnrJISSearch.html
Gridシート1行目

検索画面

テキストボックスへの入力

XPathの取得

JIS番号のテキストボックスを識別するため、テキストボックスのXPathを取得します。

項目XPath
検索欄//input[@id="label-f01"]
検索欄のXPath
Excel値をテキストボックスに入力

Excelシートの一番目のデータ(セルA2)の値を検索欄に入力します。

IOTYPEXPath
INELEMENT:TEXT//input[@id="label-f01"]A2
Gridシート2行目

なお、JIS番号は「JISA0001」のような形式ですが、検索欄は「JIS」部分を省略して「A0001」だけを入力する形式になっています。ただ「JISA0001」のように入力してもエラーにならず検索できますので、いったん「JIS」部分の省略は無視します。(後ほど、変数を利用してJISを取り除く作業をします)

検索ボタン

XPathの取得

一覧表示ボタンのXPathを取得します

項目XPath
一覧表示//form[@name="FORM2"]//div/input
検索ボタンのXPath
クリック
IOTYPEXPath入力オプションFixed入力値
INELEMENT:BUTTON//form[@name="FORM2"]//div/inputオン値:CLICKTrueCLICK
Gridシート3行目

ボタンをクリックする場合の入力値(ON値)は「CLICK」とします。
今回のシナリオでは、検索ボタンは常にクリックしますので、わざわざクリックの要否をExcelで指定する必要はありません。よって、Fixedにチェックを入れ、入力値に「CLICK」を記述します。

結果画面

画面遷移の判定

検索ボタンを押した後、入力したJIS番号に対応する規格名称があれば、結果画面が表示されます。一方、エラーの場合は、エラー画面が表示されます。
結果画面が表示された場合のみ、規格名称を取得しますので、検索ボタンクリック後に、結果画面とエラー画面のどちらに遷移したかを判別する必要があります。

一般に画面の遷移先を識別する方法としては、

  • 入力データや操作シナリオから、あらかじめ遷移先を推定する
  • ブラウザに表示される遷移先のURLやタイトルで判断
  • 遷移先に存在する画面要素で判断(A画面にはあるが、B画面にはない)

などがあります。
今回は、遷移先の画面要素で判断します。

画面要素の特定

ということで、結果画面にあって、エラー画面にない画面要素を洗い出します。

結果画面のテーブル

結果を表示するテーブルのヘッダー情報「規格番号」で判断したいと思います。

XPathの取得
項目XPath
規格番号//th[contains(text(),'規格番号')]
規格番号のXPath
判別条件

IF文を用いて、「規格番号」が表示されていたら、「規格名称」を取得するようにします。

CtrlTYPEXPath入力オプション
IFElement:LABEL//th[contains(text(),'規格番号')]条件:表示
Gridシート4行目

規格名称の取得

XPathの取得
項目XPath
規格名称//form[@id="form"]/table//td[2]
規格名称のXPath
Excelに出力

規格名称を出力シートのセルB2に出力します。

IOTYPEXPath
OUTELEMENT:LABEL//form[@id="form"]/table//td[2]B2
Gridシート5行目

エラー画面

画面遷移の判定

エラー画面が表示されるのは、「結果画面が表示された時以外」なので、判別条件には「ELSE(それ以外)」を用います。

Ctrl
ELSE
Gridシート6行目

エラーメッセージ

XPathの取得
項目XPath
エラーMSG//div[@class="message_"]
エラーメッセージ欄のXPath
メッセージ取得

取得したエラーメッセージを出力シートのセルB2に出力します。

IOTYPEXPath
OUTELEMENT:LABEL//div[@class="message_"]B2
Gridシート7行目

IF文を閉じる

最後にEND-IFでIF文を終了します。

Ctrl
END-IF
Gridシート8行目

操作シナリオの実行

作成シナリオ

1件分の入力操作ができたので、シナリオを実行してみます。

作成シナリオ

Gridシートの内容

シナリオ実行

操作タブの実行ボタンをクリック

ブラウザが起動し、入力が始まります。

シナリオ実行中

結果画面に遷移後、操作シナリオが終了します。

シナリオ終了(ステータスバーに「終了しました」と表示)

ノーマルケースなので、4行目のIFは「True」、6行目のELSEは「False」になっています。

Excel結果

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結果

エラーケース(Excelシート)

セルB4にエラーメッセージが出力されています。