項目を選択(Select Items)アクティビティーが効かないドロップダウン

いつもご支援ありがとうございます。
少し長くなりますが最初からご説明します。

あるクライアントアプリに対しUiPathで自動入力処理を開発しています。

いくつかドロップダウンリスト形式の入力項目があるのですが「項目を選択(Select Items)」アクティビティーが効きません。
具体的には、実行時に「HRESULT E_FAIL が COM コンポーネントの呼び出しから返されました。」というエラーが発生します。
この現象については過去ログに投稿がありますが解決しているものは見つかりませんでした。

仕方なく下記のロジックを組むことにしました。

① ドロップダウンリスト項目をクリックして選択肢を開く
② 目的の値が見つかるまで「テキストの有無を確認(TextExists)」で確認しながらスクロール
③ 見つかったところで「テキストをクリック(ClickText)」

上手く動くようになったので試験を行ったところ、正しい値を選択できないケースが見つかりました。

選択肢が次の通りだったとします

1番目:あいうえお
2番目:あいうえ
3番目:あいう

「あいう」を選択させようとすると1番目が選択されてしまう、というものです。
最初にヒットした文字列をクリックするので当然の動きであると理解しています。

とはいえ正しいのは3番目なわけで、ただしく3番目を選ばせる方法はないものでしょうか?

私が試した方法

1.「出現順」パラメタを設定
→何番目が目的の選択肢なのか事前に予測できない

2.選択した後に「値を取得」して正しい値が選択されたか検査する
→値を取得できず

3.“あいう” + vbCrLf をクリックさせる
→クリックできず

4.ドロップダウンに対して「テキストを設定」で"あいう"を設定
→「メンバーが見つかりません」エラー

5.正規表現で/^あいう$/のように指定してみた
→ダメでした

一つ書き忘れました。選択肢の並び順を

1番目:あいう
2番目:あいうえ
3番目:あいうえお

のように並び替えれば解決するような気がしますが、このクライアントアプリは既製品なもので、この方法は難しいです。

@kaishii Type Into Activityを使用してみましたか?

テスト用のロジックでTypeIntoを試してみました。
なんと動きました!まだ信じられません。
朝からの悩みが一発で解決しました。ありがとうございます。

正規のロジックに組み込んで、うまく動作したら「解決済」にしたいと思います。

2 Likes

ちょっと作りこみが必要ですが、「JS スクリプトを挿入」(InjectJsScript)で解決した記憶があります。

@kaishii 発生したすべてのケースについてテストし、問題がある場合は対処してください :smile:

タイトルが不適切になったので書き換えました。

1 Like

Pressing the down key in a loop until the required string is selected is the solution in such cases where Select Item does not work because of COM Exception and Type Into does not work because of similar values.

Please find the attached code (Tested).

Choose from Dropdown.xaml (7.0 KB)

やっぱり駄目でした。皆様申し訳ありません :worried: :worried:

TypeIntoでドロップダウンが選択できることに感動してしまって「できた :exclamation:」と思ったのですが、
肝心の

という問題が解決していませんでした。

「ウインドウメッセージ」や「シミュレート」などをいじってみたのですが効果なく。

@UiJack
分かります。矢印キーで選択する方法ですね。
しかしGetTextで値が取れないので、目的の値が正しく選択できたかどうか判定できないのです。

@kaishii Type Intoを使用しているときに発生したエラー

@supermanPunch エラーは発生していません。
TypeIntoが間違った値を選択してしまうのです。

@kaishii タイプのセレクターを見せてもらえますか?

In that case, try Get Attribute activity and try to get the “value” attribute for the same element.

@supermanPunch TypeIntoのセレクタは下記のとおりです。

<wnd app='kgh300.exe' cls='FNWNS*' title='利用料マスタ' />
<wnd cls='FNUDO*' ctrlid='2000' />
<wnd cls='pbdw115' ctrlid='1002' />
<ctrl idx='4' name='hiwari_kbn' role='drop down' />

ドロップダウンリストの内容が

(space)
ABCDE
ABC

の様になっていて、このドロップダウンリストに対して「ABC」をTypeIntoすると
「ABCDE」が選択されてしまいます。
どうすれば「ABC」を選択できるのか悩んでいます。

@UiJack GetAttributeは既に試しました。
どの値を選んでも、GetAttributeが返す値は「hiwari_kbn」でした。

選択された値を知ることができれば、正しい値が選ばれるまで選択し直すことができるのですが。

選択された文字列を取得することに成功しました。

このアプリケーションは、フォーカスが当たっているときと当たっていないときで
セレクタが異なる、という特徴があって、いろいろ試しているうちに値の取得が可能になりました。

正しい値が選択されるまでTypeIntoを繰り返すことで目的の操作を実現できました。

解決策は、悩みましたが @UiJack に付けたいと思います。

皆様、今回もありがとうございました。

2 Likes

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.