こんにちは。
キャスレーコンサルティング IT(インテグレーションテック)部の梅澤です。

UiPathにて、セレクターを作成する際に使用できる「アンカー」について触れる機会があったため
自分なりに調べたこと・分かったことを纏めてみました。

今回の記事は、下記の順序で進めていきます。

  • 作業環境
  • アンカーとは
  • アンカーを使用した方が良いケース
  • アンカーの使い方
  • おわりに

作業環境

使用するアプリケーションとバージョンは下記のとおりです。

  • UiPath Studio Community Edition(ver 2018.4.1)
  • Internet Explorer 11(ver 11.0.9600.19137)

アンカーとは

アンカーとは、対象とするUI要素を別のUI要素との相対的な位置で示す際に
相対値の基準となるUI要素のことを意味します。

基本的にUiPathでセレクターが作成されるときは
最上部のウィンドウ要素を基準にして、対象とするUI要素までのセレクターが作成されます。

しかし、アンカーを使用すると、基準となるUI要素が最上部のウィンドウ要素ではなく
アンカーとして指定したUI要素を基準に、対象とするUI要素までの相対的なセレクターが作成されます。

アンカーを使用した方が良いケース

操作するUI要素のセレクターに変更の可能性が高い属性(idxなど)が含まれている場合
アンカーを使用することが推奨されています。

このような場合は、安定性の高いUI要素をアンカーとして
アンカーを基準に操作するUI要素のセレクターを作成します。

※idxとは、UI要素に固有情報がないときに自動生成される属性です。
 属性の値は数値で、そのUI要素が重複するUI要素の何番目であるかを示しています。

アンカーの使い方

アンカーの使い方を紹介するため、サンプルとして下図のようなhtmlを用意しました。
※オレンジ色が濃い程、階層が深いこと表しています。

ソースコードにすると下図のようになります。

一見、テーブルのように見えますが
リストを使ってテーブルに見えるように作成しています。

今回は「サンプル2の右隣にあるリンクに対して操作を行う」を目標にセレクターを作成してみます。

それでは、早速UI Explorerでリンクのセレクターを取得してみます。

取得したところ、上図のようなセレクターになりました。

idx(上図赤枠内)の属性が混ざっているため、別の属性でUI要素を特定できるようにしたいのですが
他の属性を見ても、このUI要素を一意に特定できるような属性がありません。

idxを特定するための属性として、そのまま使用することも出来ますが
その場合、システム改修などでサンプル1とサンプル2の間に新しい要素が加わった際に
正常に動作しなくなる可能性があります。

そのため、アンカーを使用して、idx属性が入らないようなセレクターを作成していきます。
アンカーを使用したセレクターの作成手順は、下図のとおりになります。

上記手順を実行した結果、下図のようなセレクターが作成されました。

サンプル2のUI要素とリンクのUI要素の間に、<nav>というタグが挿入されています。
この<nav>タグとは、ターゲットのUI要素とアンカーとするUI要素の相対的な位置を示すタグです。

今回の場合、<nav up=’1′>とあるため
このセレクターは、サンプル2のUI要素の1階層上の要素の配下にある
リンクというUI要素を指定していることになります。
また、ここでいう1階層上の要素とは<li>タグの要素のことを指しています。

それでは、指定したUI要素を強調表示する「ハイライト」アクティビティを使用して
作成されたセレクターで「サンプル2の右隣にあるリンク」を強調表示するか確認してみます。

無事に「サンプル2の右隣にあるリンク」が強調表示されました。

おわりに

如何でしたでしょうか。

私が初めてアンカーを使ってセレクターを作成したときは
「おぉ、すごい! というか、こんな機能があったんだ…」という気持ちでした。

1年程UiPathを使っていて、いまさら気づいた機能のため
普通に使う分には、中々存在に気づけない機能なのではと思い
記事として皆様に紹介してみた次第です。

UiPathにおいて、セレクターは重要な要素なので
アンカーを使ったセレクター作成も方法の1つとして
頭の片隅に留めていただけますと幸いです。

最後まで、ご閲覧いただきありがとうございました。

梅澤 一成
CSVIT事業部 IT(インテグレーションテック)部 梅澤 一成
UiPathを使用して、業務のRPA化を細々と行っています。