ああああ

プルダウンの選択肢を抜き出す_UiPath★Tips

プルダウンの選択肢を抜き出す_UiPath★Tips

UiPathで、プルダウンの選択肢を一覧で出したい…そんなシーンがあります。

↑こんなの

そんなときに使うのが、「子要素を探す(Find Children)」と「属性を取得(Get Attribute)」アクティビティです。

 

まずは、子要素を探す(Find Children)を設置し、「画面上で指定」から、選択肢を取得したいプルダウンをクリックします。

こんな感じになります。子要素を探す で設定するのは、「フィルター」と出力の「子」

フィルターで、どの要素を取ってくるかを設定し、出力の子で設定した変数に格納します。

フィルターを設定するには、まずは、UI Explorerを開いてみましょう。

「要素を選択」から、先程と同じように、選択肢を取得したいプルダウンをクリックします。ここで見るのは、左側にある「ビジュアルツリー」です。

「ビジュアルツリー」をスクロールしていくと、クリックしたプルダウンの要素がありました。薄くグレーでハイライトされているのでわかると思います。

今回は、このプルダウンの下に紐づいている子要素(選択肢)を取得したいので、このプルダウンの横にある三角マークをクリックして、子要素を出します。

要はこれが、選択肢というわけです。この、OPTIONをダブルクリックすると、横の窓にこの場所のUI要素が記載されます。ここをフィルターに入れることになります。

フィルターの欄には、”<webctrl tag=’OPTION’ />” と入れました。
※ダブルクォーテーションを忘れずに…
※aaname= の部分は、この部分を取得したく、選択肢によって異なるので含めません

 

次に、出力の子に変数を設定します。
変数の型は、System.Collections.Generic.IEnumerable です。ここでは、findChildrenという変数を作って入れてみました。

「子要素を探す(Find Children)」のプロパティはこのようになりました。

 

 

次に、「属性を取得(Get Attribute)」ですが、この子要素をひとつずつ取得するので、「繰り返しコレクションの各要素(For Each)」を設置し、その中に、「属性を取得(Get Attribute)」を入れます。

こんな感じです。(確認のためにWrite Lineを入れちゃってますが…)

「繰り返しコレクションの各要素(For Each)」のコレクションには、先程の「子要素を探す(Find Children)」の出力である変数をセット。Type Argumentには、UiPath.Core.UiElementをセットしましょう。

※この、For EachのType Argumentはついつい忘れがちなので注意です

 

「属性を取得(Get Attribute)」には、「要素」「属性」「出力(結果)」を設定します。

「要素」には、For Eachの要素である item を、「属性」には取得したいのは選択肢ということで ”aaname” を、結果には変数(String型)をセットします。

「属性を取得(Get Attribute)」のプロパティはこうなりました。

 

これで完成です。実行してみます!For Eachの中に確認用に「1行を書き込み(Write Line)」を入れておいたので、出力欄に出てきましたー。

わーい!取れた!

選択肢が取れてしまえば、後はエクセルに張り付けるなり、条件分岐のConditionに使うなり、好きに活用できますね!

試しにエクセルに書いてみました。

For Eachの前にカウント用の変数(Int32型)をセット。セルに書き込みを設置し、「セル」には、書き込みたい列 + カウント用の変数をセットします。(ここでは、 ”A” + count.ToString )
その後にカウントを一つ増やす「代入(Assign)」をセットで完了です。

エクセルに書き込めてます。

 

 

以前やったプロジェクトでは、あるリストを基幹システムに登録する際に登録項目の中にプルダウンがあるのですが、リスト中の選択肢がプルダウンにない場合もあるかも…ということで、今回のFind ChildrenとGet Attributeを使いました。

その時は「条件分岐(IF)」を用いて、リスト中のものと一致したらリストのものをセット、一致するものがなかったらビジネスエラーという処理を行いました。

 

なかなか便利な、プルダウン中の選択肢を抜き出す方法。

是非使ってみてください。