7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【UiPath】指定した画像の隣のテキストを取得する

Last updated at Posted at 2018-05-12

サイトの掲載情報を取得する際、Get Textアクティビティでは苦戦したケースがあったので、
具体的な問題点と、代替策の紹介をします。

問題点

例えばコレ→ 露出.png

写真投稿サイトFlickrの投稿写真の絞り値(この例だとf/4.5)を取得してみたのですが、
単純にGet Textを使うとSelectorは
selector1.png
と設定されます。
idの 'yui_3_~' は固定でなくページアクセスの度に変わるので、二度目からは確実に失敗します。
(Flickrは全てのコントロールのidを動的に生成してるっぽい)
逆に後半部分を*(アスタリスク)に変えると、他のコントロールとダブってうまくいかない。

代替策=アンカー画像の相対位置でテキスト取得

HTML要素を使ったSelectorには限界があるので、画像検出機能に頼ります。
絞り値の左にはシャッターマークがあるので、これを頼り(アンカー/Anchor)に絞り値を取得します。
shutter.png

Citrix Recording > Scrape Relative を使います。
citrix.png scraperelative.png
step1.png まずシャッターマークを囲んで目印(アンカー)にします。
step2.png 次にフキダシ内の[indicate]を押して、
step3.png 取得したいテキスト部分を囲むと・・・

狙ったテキストを取得でき…るはずが、↓の[Nokon D500]のように他の余計なテキストも拾ってしまってます。
どうもScraping Methodが"FullText"なのが原因のようで、
step4.png
"Native"にするとうまく狙った範囲のテキストだけ取得できました。
step5.png

Save&Exitで自動生成されたワークフローは

  1. Find imageでシャッターマークの位置を取得
  2. Set clipping regionで1.からの相対位置指定でテキスト読み取りRegionを設定
  3. Get visible textで2.のRegion内のテキストを読み取り、変数に保存
  4. 再度Set clipping regionでテキスト読み取りRegionをクリア
    となりました。
    step6.png

で、実行。うまく取れてます→ step7.png

ただし画像検出である以上、ディスプレイ上に検出したい画像が表示されている必要があります。
今回のFlickrの絞り値はサイトの下の方にあるので、最初にSend keyでPage downさせて
絞り値が表示される位置までスライドさせる必要があります。面倒。


※補足

今回のFlickrですが、Get TextアクティビティでもサイトのHTML構造を(IEならF12で)調べながら
Selectorを工夫する事で、安定したデータ取得を実現可能です。

HTMLの構造↓を見ると、親のclass要素(c-charm-item-~)とSPANタグで掴めそう。
html.png

parentclass要素を使う事で安定的に掴めるようにしたSelector。コレでいけます。
newselector.png

Selectorを工夫して安定性を高められるのがUiPathの最大の強みなのですが、
なぜ最初からこういうSelectorを生成してくれないのか。
安定したSelectorを自動で組んでくれるAIが必要だな・・・

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?