リモート先で開いたアプリケーションがアクティブにならない

こんにちは

リモートデスクトップで接続した先の環境で、
"アプリケーションを開く"アクティビティで開いたアプリを
操作しようとしているのですが、開いたアプリが非アクティブ
になってしまいうまくクリックできません。

今のところ、"アクティベート"アクティビティや
"ウインドウにアタッチ"アクティビティを使用しているのですが
そもそもそれらのアクティビティで要素を捉えられず
うまくいきません。

画像認識でアプリのウインドウをクリックすれば
アクティブにはなるのですが、安定性の面で不安があります。

何か根本的な解決策はあるのでしょうか?

経験からの意見なので、あくまで参考程度にしてください。

リモートDesktopでの操作は、繰返し実行すると玉に停止する事がありますが、Repairで修正かEdit Selectorで違いを見分け修正する事で完璧に動作します。

1.Attach WindowでDesktopを選択

2.Click imageで画像をダブルクリック
ショートカットをダブルクリックでソフト起動

3.Click Activitiesで対象画面クリック

4.文字入力
Type intoやSend hot keyを駆使しながら
文字入力し実行

リモートより通常の操作の方が、UiPathを動かすのは楽です。

1 Like

koretaさん

コメントありがとうございます。

アプリの起動のところで今までは「アプリケーションを開く」を使っており、
それが原因で非アクティブになっていたようです。
(なるときとならないときがあり、なんとも不安定でしたが・・・)

ショートカットを画像でクリックで開くようにしたところ
アプリがアクティブ状態で開くようになりました。
ありがとうございました。

1 Like

@basashi5 さん
UiPathのリモートランタイムを経由しているのであれば、「アプリケーションを開く」のほうが安定する気がします。 (Click Imageだと、OS環境の変化等によって動作しなくなるリスクがあります)

「アプリケーションを開く」の後、ウィンドウをアクティブにする操作( UiAutomation > 要素 > コントロール > アクティベート )を行えば、自動的にアクティブになったパターンでも、アクティブにならなかったパターンでも、そこから先は安定して進むように思えます。

tkgsn146さん
コメントありがとうございます。

当初記載している通り、「アプリケーションを開く」を使いたいのですが、
「アクティベート」アクティビティが動く場合と動かない場合があります。
安定して「アクティベート」アクティビティが動く方法があれば
教えてもらえないでしょうか?

「動かない場合」というのは、「アクティベート」アクティビティがSelectorNotFound等で落ちるのでしょうか。
それとも、実行はされているけれども、対象要素がアクティブにならないままスルーされている感じでしょうか。

後者であれば、「アクティベート」のプロパティで、「準備完了まで待機(WaitForReady)」をCOMPLETEに設定してみてください。
あとは「アクティベート」アクティビティのセレクタがどうなっているか、も要確認です。

 <wnd app='xxxxx' />

のような形式になっていると思うのですが、アプリケーションの起動が完了してから表示される要素(入力ボックスやボタン等)があれば、そちらを指定するのも手だと思います。

1 Like

@tkgsn146 さん
前者の「アクティベート」アクティビティがSelectorNotFoundで落ちる、という現象でした。
ただ今日現在では何度試しても再現できず、直ったとも言いにくい状態です。
また発生したら相談させて頂きます。m(__)m

1 Like

@basashi5 さん
SelectorNotFoundは文字通り、対象要素を探すためのセレクタが機能できなかった(見つからなかった)のが原因なので、再発するようならセレクタを見直してみてください。(たとえば起動するごとにウィンドウタイトルが変わる等が原因の可能性があります)

あと、リモート接続先の処理遅延などでタイムアウトになっているだけ、という可能性もあるので、タイムアウト値(待機時間)を長めにとってみるのも手かもしれません。

1 Like

@tkgsn146 さん
ありがとうございます。
次回発生時には、セレクタに可変の箇所がないか、タイムアウトの影響がないか見てみるようにします。

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