セレクターがうまく取れない!ときの対策・考えること

RPA開発の際、セレクターがうまく指定できないときの対策や考慮事項のまとめ。同様の問題にぶつかったときは上から順に試してみると解決するかもです。
基本的にはUiPathをベースにしてますが、考え方自体はWinActorやPower Automate Desktop(PAD)等の他ツールでも汎用的に使えると思います。

目次

【優先順】対策・考慮事項

STEP

セレクター指定に使えそうな要素がないかよく確認する

まず、UIExplorerやブラウザのDevTools(大体Ctrl + Shift + iで開く)使って、指定するのに使えそうな要素がないか詳しく確認してみるとよいです。

UIExplorer

普通に画面クリックでセレクターを指定しただけだと、↓の画像のように実は指定に使われていない項目が存在します。それらのチェックをつけることでセレクター指定するだけで解決する場合も結構多いです。
イメージとしては、目的のものを特定するための判断材料(ヒント)をロボットに与えるような感じです。
UIExplorerの詳しい使い方はこちらがとても参考になりました。

UIExplorer上の指定に使われていない項目たち(赤枠)
UIExplorer上の指定に使われていない項目たち(赤枠)

Devtool(開発者ツール)

ツールを使って、現在指定しているセレクターと目的のセレクターを見比べてみましょう(以下画像はEdgeの場合ですがChromeとかでも大体同じはず)。現在のセレクターでうまくいかないということは、何かが間違っているか情報が足りないということなので、セレクターを追加・修正すれば解決するはずです。
ツールで目的のセレクターをコピーすることもできるので、UiPathアクティビティのセレクター入力欄にコピペすると解決することもあります。

ツールの要素(Elements)タブから、HTMLを確認したりセレクターをコピーできる
STEP

セレクターのパターンを把握する

Webページ(アプリ)によっては、ページが更新されるたびにセレクターが変わるものもあります。
その場合は、ページ更新→セレクター確認を繰り返してそのパターンを把握し、それに合う動的セレクターを作成すれば解決します。

<select id="sampleid_xejfiwhodxeh9cugki" (省略)>

例えば上のようなセレクターで、sampleid_が固定で、後に続く英数字がページ更新のたびに変わる場合は、* (アスタリスク)を使ってid="sampleid_*"とすればうまく指定でき動作が安定するはずです。

もし、パターンがない場合はすべて* にして他の属性と一緒に指定してみるか、この記事のほかの方法を併用するのがいいと思います。

STEP

アンカーを使う(UiPathのみ)

目的の要素(セレクター)の近くにある要素(アンカー)を指定して、それを目印に目的のものを検索・指定する方法です。目的の要素単体だと動作が不安定な場合でも、アンカーを使えば動作を安定化できます。
この記事を書いている時点ではWinActorやPADの機能にはなさそうだったので、UiPathの場合のみになります。

現在使えるのは大きく分けて2パターンで、従来であるクラシックアクティビティの「アンカーベースか、今後主流のモダンアクティビティの「クリック」や「文字を入力」等のUI自動化系アクティビティに内包されているアンカー指定機能かになります(パッケージバージョンにもよる)。

確認時のパッケージバージョン

モダンもクラシックも設定の仕方は違いますがやってることはほぼ同じです。

クラシックの場合は、アンカー指定のために「要素を探す」を入れてから、隣の箱で目的の操作(↓では「文字を入力」)を設定します。

モダンは「文字を入力」単体で自動でアンカー(↓では「Email」というラベル)を指定してくれます。
自動指定のアンカーを後から編集できるので、今から使うならモダンを一択かと。

サンプルサイトのフォーム入力を両方で設定した
STEP

セレクター指定を諦める!ホットキーを使う方法

ここまでやってうまくいかない場合は、セレクター指定を諦めて、キーボード操作でできないか試してみましょう。
意外と盲点だったりします。実際に人間によるキーボード操作でできるなら自動化できるはずです。
(Webページ(アプリ)によっては、マウス操作を介さないといけないものもあるので100%とは言えないですが。。。)
UiPathなら「ホットキーを押下」アクティビティや「文字を入力」アクティビティを使います。

(関連記事後日UP: UiPathで長押しを含むショートカットキーを入力させる方法 )

例:Outlookで「未読」のメールフィルターを適用したい

仮に、画像赤枠のセレクターがうまく指定できなかったとします。こういった場合は、Outlookのウィンドウをアクティブにした状態で tab3回、Enter、↓矢印キー2回、Enter とキーを押させると、未読のメールフィルターをかけることができます。
ウィンドウに対してホットキー(ショートカットキー)を押せればいいので、ピンポイントでセレクターが指定できなくても問題になりません

Outlookに未読メールのフィルターをかける
STEP

画像認識やOCRを使う

個人的にはほとんど使わないです。不安定な動作になりがちだし、↑で紹介した方法で大体解決するので。
こういった機能が出てきた当初よりも精度が上がっているかもしれないので、他にどうしようもない場合は試してみるのもアリですが、画像がちょっと挿し変わるだけでもエラーになるので、他の方法に比べてメンテナンスコストは高めだと思います。

UiPathだと画像をクリックアクティビティOCR で検出したテキストをクリックアクティビティがあります。
WinActorには画像マッチングOCRマッチングという機能があります。
PADにも同様の機能があるみたいです。

(番外)動作が不安定なときはリトライスコープを使う

セレクターはちゃんと指定できているのに、エラーになったりうまくいったりと動作が不安定な時はリトライスコープで繰り返しトライさせると安定します。詳細は以下記事から。

10回とか繰り返してダメなら多分何回やってもダメなので、実装を変える必要があります。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次