【WA0046】ブラウザ操作・XPathの作成_表データの操作
こんにちは、NTTデータ WinActor技術支援チームです。
いつもユーザーフォーラムをご利用いただき、ありがとうございます。
今回は表の操作を行うに当たって、便利なXPathの作成方法をご案内したいと思います。
※見本としている表は、説明がわかりやすいようにシンプルな構造にしています。
※実際に操作する表の構造によっては、これから説明する方法では操作できない場合もございますので、
操作する表に合わせたXPathを作成ください。
例えばこんな表があるとします。
該当するカテゴリの会社名を抜き出したい、サイト名クリックしてリンク先に移動したい場合どうシナリオを作成しますか。
同梱ライブラリを使用する場合、表データの上から順番に該当データかどうかを突き合わせて、
該当データだったら該当データ行の別の列のXPathを作成し、行いたい操作にその作成したXPathを使用するという流れになるかと思います。
《操作手順イメージ》
①「表の行数を取得」で行数を取得する。
②「カウントダウン」で①の行数を-1し、データ数だけにする。
③「繰り返し」に②で計算したデータ数を繰り返し回数としてセットする。
④「表の値取得」でカテゴリ列の1つ目のデータから取得する。
⑤④で取得したデータが、該当のデータかどうかにより処理を分岐する。
⑥該当データだった場合、「文字列の連結(3つ)」でXPathを作成する。
⑦⑥で作成したXPathを「値の取得」や「クリック」等に設定しておき、データの取得やリンクのクリックを行う。
⑧「繰り返し終了」で繰り返しの処理を終了する。
⑨該当データでない場合、次のデータ行の読み取り行う為に行数を「カウントアップ」で1あげておく。
結構複雑な操作ですよね。
以前、XPathを作成することで、柔軟な操作が行えることをご案内させていただきましたが、
ここでもXPathを作成することで、簡単に希望の操作を行うことができます。
今回作成するXpathに使用するのは、
preceding-sibling
following-sibling
の2つです。
上記にあげた表の見本ですが、ツリー形式で表示させると以下のような構造になります。
■preceding-sibling
preceding-siblingは、基点となる要素の前にある兄弟要素を指定することができます。
兄弟要素は、ツリー形式の図でいえば、
tr要素の中の3つのth要素、tr要素の中の3つのtd要素がそれに当たります。
例えば、カテゴリ「FAQ」の会社名を取得したいとします。
会社名はカテゴリ「FAQ」の前にある兄弟要素となりますので、
preceding-siblingを使用して、XPathを作成すると以下のようになります。
//td[text()="FAQ"]/preceding-sibling::td[1]
※テキストが「FAQ]であるtd要素の1つ前のtd要素という記述になっています。
※最後の[1]を[2]や[3]にすることで、いくつ前のtd要素かの指定ができます。
《記述例》
基点となる要素/preceding-sibling::兄弟要素[場所]
このXPathをライブラリ/23_ブラウザ関連「値の取得」に設定すると、
1つ前のtd要素内のテキスト「NTTAT」を取得できます。
同梱ライブラリでは①から⑨を設定しないと取得できなかったことが、
XPathを作成することで「値の取得」だけでデータが取得できるようになりました。
■following-sibling
following-siblingは、基点となる要素の後にある兄弟要素を指定することができます。
今度は、カテゴリ「FAQ」のサイト名(リンク)をクリックしたいとします。
サイト名はカテゴリ「FAQ」の後にある兄弟要素となりますので、
following-siblingを使用して、XPathを作成すると以下のようになります。
//td[text()="FAQ"]/following-sibling::td[1]
※テキストが「FAQ]であるtd要素の1つ後のtd要素という記述になっています。
※最後の[1]を[2]や[3]にすることで、いくつ後のtd要素かの指定ができます。
《記述例》
基点となる要素/following-sibling::兄弟要素[場所]
このXPathをライブラリ/23_ブラウザ関連「クリック」に設定すると、
1つ後のtd要素「WinActor公式FAQサイト」をクリックできます。
同梱ライブラリでは①から⑨を設定しないとクリックできなかったことが、
XPathを作成することで「クリック」だけでリンクのクリックができるようになりました。
※応用としてリンクを取得したい場合は、作成したXPathを「値の取得」に設定し、
「括弧書きの内側を取り出す」(ライブラリ/07_文字列操作)を使用すれば、リンクのURLを取得できます。
同梱ライブラリを使用して、シナリオを作成する方法でも全然問題ないのですが、
XPathを作成することで、無駄な操作を省くこともできます。
ブラウザ関連ライブラリは、XPathを作成することで、操作の幅が広がりますので、
最初は慣れないかと思いますが、ぜひ挑戦してみてください。
【参考】 ※過去コラム
XPathの作成例
【動作検証環境】
WinActor:Ver.7.3.0
OS:Windows10
ブラウザ:Chrome
<お願い>
本投稿に関しての問合せにつきましては、
恐れ入りますがコメントではなく、個別問合せにてお願いいたします。
★お問合せ方法はこちらのコラムをご参照ください
【WA0116】ユーザーフォーラムで質問を投稿するときの手順