25
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

Organization

UiPathでRPAを実践してみる(5) ~セレクタについて~

前回、書いた内容でSelectorについて述べました。
これはUiPathが各要素を認識するための記述で、私の理解ではUiPathにとってのとしての機能を果たしていると考えています。
ここを理解する事で、UiPathをきちんと使いこなせるようになります。
早速確認をしていきましょう。

まずは、問題が発生するケースを見てみましょう。

例えば、下記の様なテーブルがあり、総合計の値(この場合は300)を取得したいとします。
キャプチャ.PNG

前回の記事の「テキスト情報の取得」を参考にして、Recordingの機能によりデータを取得する事にしました。
生成される処理は下記の通りです。(最後に取得した値を確認するために、Message Boxを追加しています。)
キャプチャ(1).PNG

実行すると、下記のメッセージボックスが表示されます。無事に、「300」という数字が取れました。
キャプチャ(2).PNG

次に、同じテーブルでレコードが1件、追加されたとします。
キャプチャ(3).PNG
この状態で、上記で作成した処理を流すと、下記のメッセージボックスが出力されます。
キャプチャ(4).PNG

残念ながら、「250」という数字が抽出されてしまいました。本当は総合計が欲しいのにうまくいきません…

何故、上手くいかないのか

ここで、Selectorを確認する必要が出てきます。UiPath StudioよりSelectorを確認しましょう。まずは、テキストを取得しているGet Textをフォーカスして、Selectorを確認します。
キャプチャ(5).PNG
下記の画面が表示されます。
キャプチャ(6).PNG
見てみると、テーブルの3カラム目(tableCol='3')で、4行目のテキスト(tableRow='4')を取得する様に指定されていることが分かります。

なので上記の例では、このルールに則って4行目の3カラム目にある「250」という数字を取得してしまったのです。

この問題を解消するには?

ここでようやく、Selectorを修正していきたいと思います。これには、UiExplorerというツールを使います。そして、これはUiPath Studioには含まれています。ウィンドウズアプリケーションやWebページの構造を表示し、ユーザーによる選択を可能とする機能です。(何だか分かり辛い説明ですね。)
とりあえず、内容を見ていきましょう。
まず、Launch UiExplorerをクリックします。
キャプチャ(10).PNG
下記の画面が立ち上がるので、矢印をクリック。取得したい要素を選択しましょう。(このケースでは、総合計の数値を選択しています)
キャプチャ(11).PNG
下記の様な画面が表示されます。ここでは、TableRow(つまり何行目か)が固定になっていることが問題でしたね。キャプチャ(12).PNG
なのでここでは、tableRowのチェックを外して、代わりにrowname(=総合計)をチェックしてあげましょう。
キャプチャ(13).PNG

最後に、<webctrl ~で始まる部分をコピーして、先ほどのアクティビティのSelectorに貼付けましょう。
キャプチャ(14).PNG

この作業により、UiPathは「総合計」の行の3カラム目のテキストを取得する事を認識しました。行が増減しても、これで問題ありません。
キャプチャ(15).PNG

時に、UiPathを使うときには人間が認識している情報を、上記のような手順により認識させる必要があります。Selectorは変数も使えますし、*?といったワイルドカードも利用可能です。
きちんと使いこなすことで、自分が欲しい情報を確実に抽出できるようになりますので、色々と試してみると面白いと思います。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
25
Help us understand the problem. What are the problem?