上手くClickできない、上手く文字が入力できない…というときの原因として、
「画面遷移のタイミングより前にClickしてしまう」というのがあります。

Click等のアクティビティで待ち時間の調整することで(Timeoutの時間を延ばすとか)解消できることも多いですが、

それでもダメなときは、Find Element(要素を探す)です。

ちなみに類似のアクティビティとしては、Element Existsがあります。
(これについても後述します。)

訳すれば、「エレメント(要素)を見つける」という訳で、他のアクティビティとセットで使うことが多いです。
こんな組み合わせです。

・Find Element → Click
・Find Element → Type Into(文字を入力)
・Find Element → Get Attribute(属性を取得)例:入力してある文字を取り出す※
※ちなみに、文字を取り出すときは、当初GetTextを使ってましたが、最近はGet Attributeを使っています。その方が使いやすいような気がしています。

Clickとの組み合わせで説明します。

画面遷移後にクリックするケースでは、
シナリオ通りの処理だと、すぐにクリックしようとするので、画面が変わるのに間に合わず、空振りしてエラーとなってしまうことがあります。

この連載の一番始めに書いた「待て」というのが必要ということですね。

 

そこで登場するのが、Find Elementです。
つまり、Find Elementで要素の登場を待って、それからクリックする(クリック以外のアクションも含む)という流れです。

(イラストはオフロードパスです。Find ElementからClick等の他の要素にパスするイメージです。
にわかラグビーファンは1ヶ月前には知らなかった言葉を得意げに使っております。)
左のロボットがFind Elementくんで、右のロボットがClickくんです。

 

 

Click等のアクティビティも待ち時間の指定があり(Timeoutの時間を延ばすとか)、画面が変わるまで待ってくれるときもありますが、
(大抵はこれで十分だったりもします)
不安定なときは、画面遷移後のアクションには、Find Elementを前に持ってくるのが安定したプロジェクトを作る秘訣です。

Delay(時間指定して待機する)のアクティビティを使う方法もありますが、画面遷移はどの位時間がかかるかは、その時々によって違うので、UiPathアカデミーでも、オススメされていなかった記憶があります。

なお、Find Elementの戻り値(OutPut)は「UiElement variables」なるものらしいですが、ブランクのままで大丈夫です。

また、画面遷移に時間がかかるケースの場合、待機時間(TimeoutMS)を変更する必要があります。
デフォルトではTimioutMSが30秒なので、要素の表示がもっとかかる場合は、TimioutMSを30000以上にする必要があります。
(この30000が30秒なんです。Delayの場合は00:00:01が1秒、どっちにしてもわかりずらいですね-)

こんな感じです。

 

以下は雑感と豆知識です。

1.UiPathでは、良くあるんですが、アクティビティ名と右のプロパティーズの表示名称が違っているんです。
フロー上のアクティビティ名(FindElement)は説明文を書くときに消してしまうことが多いのですが、
その右側が、UiPath.core.Atcivities.WaitUiElementAppearっていうのはわかりづらいんですよね。

2.既に要素が表示されているときは「Element Exists(要素の有無を検出)」を使います。
これは戻り値がBoolean(True、False)で、その後にIF文もしくはFlow Decision(フロー条件分岐)で処理を進めます。

3.日本語版の「要素を探す」ってイケてないですね。
Find って探すっていうより「見つける」っていったニュアンスだと思うんでよね。余計なことですが。
日本語版でのアクティビティ検索だと[find element]と入力しても、表示されない(elementなら「要素」のアクティビティ一覧に表示される)ところもイマイチです。
↓こういうことです。(2019/11現在の状況)

↓日記の目次を作りました。
RPA体験談【目次(主にUiPathについて書いています)】

 

 

 

前へ