【初心者向け】UiPathによるRPA実装16 「Selector」の概要と適正化方法

前回の記事では、Excelファイルの整形処理まで説明しました。そして、「Excelウインドウが最大化された状態でプログラムを走らせると、処理が止まってしまう」という問題があることを指摘しました。

具体的にどんな形で問題が起こるのか、まずは確認してみましょう。

<スポンサーリンク>

問題の特定

事象の確認

Excelを立ち上げ、ウインドウを最大化した状態で、Excel上何も操作をせず、ファイルを閉じてください。すると次回Excelを開いた時、ウインドウが最大化された状態で開かれるはずです。

この状態で、これまで作成した自動化プログラムを実行してみましょう。実行の際、もしもこれまで作成した「Google検索結果.csv」や「Google検索結果.xslx」が残っていれば、削除しておいて下さい。

すると、エラー画面が表示されて、処理が途中で止まってしまいます。エラー内容は、「「Slector」とやらに紐づいている「UI element」が見つからない」というものですね。「Selector」の説明は後に回しますが、「UI element」とは、ウインドウ上のボタンやテキストボックスなどの「部品」と考えておいてください。

一旦このエラー画面は「OK」ボタンを押して閉じてください。

ここで、Outputペインも見てみましょう。同様のエラーメッセージが赤字で表示されています。

このエラーは、自動化処理上のどこで起きているのでしょう?中央の領域を見ると「Click ‘push button ファイル タブ’」にフォーカスが当たっており、ここでエラーが発生したことが分かります。

ここまでの状況を踏まえると、「UiPathがクリックすべきExcel上の「ファイル」ボタン(というUI element)が、UiPathには見つけられなかった」というのがエラーの内容のようです。

「ファイル」ボタンの場所が問題なのか?

エラー内容からは、「Excelウインドウを全画面表示にしたことにより、自動化プログラムを作成した時から「ファイル」ボタンの場所が変わってしまったため、UiPathがボタンの場所を把握できなくなってしまった」ようにも思えます。

では今度は、Excel画面の最大化をやめて、ウインドウの場所だけを変えてみましょう。

まずはExcelファイルを立ち上げ、ウインドウ右上の最大化をボタンを押し、通常サイズにも戻します。これでウインドウの位置、サイズはプログラムを作成した時点に戻りました。

さらにウインドウを別の場所に動かして、何もせずに閉じてください。これで、再びExcelファイルを開くとき、ウインドウの場所だけが変わった状態で開かれることになります。

この状態でもう一度プログラムを動かしてみましょう。(「Google検索結果.csv」や「Google検索結果.xslx」が残っていれば削除しておいてください)

すると今度は何の問題もなく最後まで処理が動きましたね。ということは、UiPathは単純に物理的な位置で押すべきボタンを識別しているのではないと分かります。

では、UiPathはどのようにUI elementを識別しているのでしょうか。

「Selector」という概念

UiPathによるUI elementの識別方法

結論から言ってしまうと、UiPathは「Selector」という概念により、UI elementを識別しています。では、「Selector」とはなんでしょうか?

ExcelやWebサイト上にあるボタンやテキストボックス等のUI elementは、「属性」と呼ばれるものの階層構造により表現されています。

今一つ分かりづらいので、1つ例をあげてみましょう。

例えば、以下のExcelの画面には「行の高さ」というボタンがあります。これは、

  1. アプリケーションがExcelで
  2. ファイル名が「Google検索結果.xlsx」で
  3. その中の「ホーム」タブの
  4. 「書式」メニューの
  5. 「行の高さボタン」

という複数の属性の階層構造で表されています。このように、各UI Elementを階層構造で表現したものを「Selector」と呼びます。そして、UiPathはこの「Selector」によって、処理対象とするUI elementを識別しているのです。

なお、実際のところ、属性の階層構造は人間の目には見えない、コンピュータだけが識別できる細かいものも多々あるのですが、UI Elementを特定する階層構造のイメージはつかんで頂けたでしょうか。

「ファイル」ボタンのSelectorを見てみよう

それでは、問題が発生した「ファイル」ボタンがどのようにSelectorとして表現されているのか、実際に見てみましょう。

途中で処理が止まってしまった「Click ‘push button ファイル タブ’」ボックスを選択した状態で、右側のPropertiesペインを開き、「Target」と書かれたところを開いてみて下さい。「Selector」と書かれた行がありますでしょうか。

右の欄に文字列が入っていますが、文字が切れてしまっているのでその右隣のボタンを押して、全文字列を見たいと思います。

開かれるウインドウの下部、「Edit Selector」と書かれたところにSelectorの内容が一通り記載されています。アプリケーションがExcelで、ファイル名が”Google検索結果.csv」”など分かりやすい部分もあれば、何を示しているのか分からない部分も多々ありますね。

実はこのSelectorの内容が、Excelを全画面表示にした場合とそうでない場合で異なっているのが、途中で処理が止まってしまった原因なのです

全画面表示時におけるSelectorの内容

それでは次に、全画面表示の場合、Selectorの内容がどのようになっているのか、見てみたいと思います。

まずは先ほどと同様、Excelを立ち上げ、全画面表示にして何もせず閉じた上で、自動化プログラムを実行します。すると、やはり同じところで処理が止まりますね。

ここで先ほどと同様の「Selector Editor」ウインドウを表示し、右上の「Attach to Live Element」という文字をクリックします。この「Attach to Live Element」とは、Selectorを今現在表示されているUI Elementのものに置き換えるために使う機能です。

文字をクリックすると、デスクトップ上の任意の場所を選択できるモードに入りますので、全画面表示されているExcelの「ファイル」ボタンをクリックします。

すると、以下の通り、Selectorがアップデートされたというメッセージが表示されます。「OK」を押して、元のウインドウに戻りましょう。

ウインドウにはアップデートされたSelectorが表示されています。ここで、新しいSelectorと先ほどの古いSelectorを比較してみましょう。

細かい違いですが、古いSelectorには”aaname=’Ribbon'”という文字列が余分にあるのが分かりますでしょうか。ということは、この“aaname=’Ribbon'”という文字列を含まない新しいSelectorであれば、Excelが全画面であろうとそうでなかろうと正常に動きそうな気がしますね

さて、ここでテスト実行と行きたいところですが、実はもう1か所修正すべきところがあります。それは、Excelファイルを閉じるところ、「Click ‘push button 閉じる’」と書かれたボックスです。修正方法は全く同じで、selectorから”aaname”の記載を削除するだけですので、やってみて下さい。

テスト実行

それでは一通りの修正が完了したところで、テスト実行と行きましょう。

Excelを全画面表示した場合とそうでない場合の2通りで試してみて下さい。実行する時、「Google検索結果.csv」や「Google検索結果.xslx」が残っていれば、削除しておいて下さいね。

どうでしょう、無事に両パターンとも動きましたでしょうか。

終わりに

今回はUiPathの重要概念である「Selector」について説明しました。私の経験上、処理が途中で止まってしまった場合はSelectorが原因となっていることが少なくありません。

なお、今回はシンプルに問題を解決することができましたが、場合によってはSelectorのどこを修正すべきか試行錯誤することもあります。これはそのうち慣れてきますので、色々と試してみて下さい。

さて、次回からは本題に戻りたいと思います。具体的には、作成したExcelファイルをメールで送信するという処理を自動化していきます。