Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
4
Help us understand the problem. What is going on with this article?
@Jyugi

Snippetのコードを改良してUI特性を把握する

More than 1 year has passed since last update.

概要

UiPath Studioで操作対象アプリをレコーディングをすれば、ほとんどの画面操作をアクティビティにすることができます。

しかし、操作する対象のアプリによっては、なかなかアクションを受け付けない場合があります。

受け付けない場合は、
クリックや文字入力の仕方を切り替えたり、3つ(Default, Simulate Click/Type, Send Window Message)準備されており、
最も合う方法を探すことができます。
アクティビティを実施前に、アプリケーションの反応を待つために、ウェイト時間を適切に設けたりする必要があります。
こういったトライアンドエラーを繰り返しながらの開発・チューニングには結構時間がかかります。

そこで、セレクターを用いて、入力できる項目に対して最適な方法を見つけます。

※12/23の段階では、特性把握の為のアイデアを散りばめてあります。
 完成したらもう少し詳しく記述する予定です。

作り方

大きく分けて以下の3つの方法で特性を把握します。

  1. 入力受付項目の抽出
      Snippetを改良して、入力を受け付ける項目(セレクター、ID、Tag)を抽出します。
      今回のメインです。

  2. 入力受付の試行
      1で抽出したデータを、入力を実施するアクティビティ(Type Into、Click等)と
      モードを切り替えながら試していきます。
      また、ホットキーを打ち込んで動的にチェックが走るか等をチェックします。

  3. レポート出力
      2で試した結果をレポートにまとめます。
      各モードでの動作時間、成功/失敗状況、参考となるスクリーンショット、
      ホットキー利用時の挙動などを出力します。

1. 入力受付項目の抽出

ベースのプログラムとしてUiPathのスニペットを用います。

使うスニペットは、UiPath Studioに準備されている「For Each Child.xaml」です。

・操作したいアプリケーションを開いておきます。
・スニペットで「For Each Child」を選んで、シーケンスにドラッグします。


・エラーが発生している「Find children of」で、「画面上で指定」を選びます。

この時点で調査したい範囲を選択できない場合は、拡張機能が入っているか確認してください。
それ以外の場合は、セレクターが使えませんので画像認識で自動化する必要があります。
この記事では対象外とします。

・調査したいエリアを選択します。 (画面はGoogleフォームです。)

・プロパティのスコープを「FIND_CHILDREN」から「FIND_DESCENDANT」に変えます。
 これで、調査したいエリア内の画面要素をすべて対象にすることができます。

ここまでで実行すると、テキスト文字だけが出てきます。

Log Message アクティビティを使って、Selectorの文字列を出してみましょう。
プロパティのメッセージに「child.Selector.ToString」と入れます。
同じ入力項目でも冗長なものがあることがわかります。

操作対象の中の傾向を見るために、
tag属性とname属性を抽出して出力してみます。
正規表現で抽出しています。

tag

System.Text.RegularExpressions.Regex.Match(child.Selector.ToString, "tag='.+?'").Value

name

System.Text.RegularExpressions.Regex.Match(child.Selector.ToString, " name='.+?'").Value

出力してみると、name属性が操作対象になります。
(レコーディングした時も同じIDをつかみます。)

name-SelectorをDictionaryとして格納します。
name-DIVもDictionaryに格納します。

ループ後にDictonaryのサイズを確認します。

2. 入力受付の試行

上の2つのDictionaryを利用して総当たりでのチェックを行います。
以下のようなイメージを試行します。

image.png

総当たりだと時間がかかりすぎるので、Tagの種類毎に1パターンでもよいと思います。
その場合は以下のようなイメージを試行します。
image.png

(実際のサンプルを例示できずにすみません。。)

3. レポート出力

  2で試した結果をレポートにまとめます。
  以下のような項目をExcel等にまとめてエビデンスとします。

  ・各モードでの動作時間
  ・成功/失敗状況
  ・参考となるスクリーンショット、
  ・ホットキー利用時の挙動
  
  また、それ以外のRPAとして動作する環境の判断のために、以下のような情報も収集するとよいかもしれません。
  ・マシンのスペック(メモリ、CPU)
  ・ping動作時間(Webアプリや、共有フォルダに対して)

まとめ

  業務上、客先の業務アプリの初期調査で思うように動作できないことがあり、
  大幅にスケジュールが遅れてしまうことがあった経験から、
  こういったツールがあれば初期の段階が楽になるかと思います。
 
  時間の関係で後半以降はアイデアにだけになってしまいましたが、
  どこかのタイミングで完成させたいと思います。

  Ui特性の把握はRPAの肝になる部分なので、
  もっと使いこなせるようになりたいと思っています。

  乱文乱筆失礼いたしました。
  ここまで読んでいただきありがとうございました。

4
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Jyugi
SIer RPA適用 / UiPath使い / お手本になるようなロボット開発を心がけています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
4
Help us understand the problem. What is going on with this article?