Chromeで別ウインドウ上の項目が選択できない


#1

お世話になります。
ブラウザ上で操作する予算管理システムをUiPathで操作しようとしています。
実績検索の際、部門名を選択する部分にボタンがあり、押すと
部門名選択画面が別ウインドウで開き、そこから選択する方式になっています。
この別ウインドウ上の項目がSelectorNotFoundになり、クリックができません。

過去記事で「Attach Window」「Attach Browser」等を使用すれば可能だという
話もありましたが、私のやり方が悪いのか、いずれも駄目でした。
selectorは「 webctrl aaname=‘部門名1’ tag=‘A’ 」とだけ出ており、
特定の項目をクリックするには情報が少なすぎるような気がします。
何とかクリックする方法はないでしょうか。それとも、このシステムが特殊なのでしょうか。


#2

セレクタ要素を固定させる機能としてUI Explorerというものがあります。

メインパネル上部のデザインタブ(RunやRecordingボタンの右にあります。)のLaunch UI Explorerをクリックしてください。
別ウインドウが立ち上がりましたら画面左上にあるカーソルマークを押し、ウェブ上でクリックしたい部門名をクリックしてください。

そうしますとHTMLのツリー構造が表示されますので、それらの要素を使うことでセレクタを安定させることが出来ます。


#3

mths様
遅くなりましたが、回答ありがとうございます。

UI Explorerで対象の部門名を選択したところ、HTMLが9層のツリー構造になっており、セレクターに記述されていたのは一番下の部分だけだった事が判りました。

上位の階層全てにチェックを入れる、最上位と最下層にのみチェックを入れる等のパターンを試してみましたが、駄目でした。


#4

おそらくですが、9層のツリー構造の子階層にセレクタを特定できる要素があると思われます。
HTMLツリーのスクリーンショットを貼っていただければ、私だけでなく他の人も答えてくれると思いますが、コンプライアンス上難しいですよね・・・

補足ですが、セレクタは本題に限らず今後必要になってくる知識です。

こちらのUiPath公式のビデオを見ていただき、要素特定に必要なセレクタの知識を学んでいただければと思います。
解決出来ることを願っております。


#5

mths様
コンプライアンス対策の為、墨塗りだらけで恐縮ですが、HTMLツリーの画像を貼らせて頂きます。


#6

画面を見る限りですと、
・一番下の行のaaname属性が固定値なので、別の部門名を選択できない原因になる
・その上の行のtableCol等で行・列が固定されてしまっている
というのが1つの原因として考えられます。

それから、

実績検索の際、部門名を選択する部分にボタンがあり、押すと
部門名選択画面が別ウインドウで開き、そこから選択する方式になっています。
この別ウインドウ上の項目がSelectorNotFoundになり、クリックができません。

別ウィンドウが表示されるまでに時間がかかっていて、その間にセレクターが見つからないと判断されてしまっている可能性もあるので、別ウィンドウ上の項目をクリックする部分を、Retry Scopeで囲ってみてください。
(あと、本当に別ウィンドウなのかが気になります。本当に別ウィンドウだと、Attach Browserしたのとは別のブラウザという判定になる筈なので、完全セレクタにしないと動作しない筈ですし……)


#7

Honoka様
回答ありがとうございます。
・tableColとtableRowをそれぞれ’*'にする
・tableColとtableRow行をオミットする
・tableColとtableRow行を削除する
を、それぞれ試してみましたが、いずれも駄目でした。

尚、既に別ウインドウが表示されている状態から実行しても同じであり、Clickの待ち時間はデフォルト(30秒)で、別ウインドウのポップアップに遅延はありません。


#8

無駄な(あるいは誤動作の原因になる)要素は外すべきなのですが、外したら今度は情報不足で正しく動かない、ということが往々にしてあるので、削除すれば良い、という話でもないです。言葉足らずでごめんなさい。

用途次第ではあるのですが、逆にtitle属性やaanameで、目的の単語が含まれているのなら、それを利用するのも手です。
たとえば「人事部●●課のデータ」みたいな情報(リンク)であれば、「人事部*」とするだけでも他の部門をひっかける可能性は大幅に減りますし。
(aanameが邪魔になるのは、順番に作業したい、あるいはn番目のものを処理したいのに、名前を優先で検索に使ってしまうような場合です)

あと、Ui Explorerの画面、上の方に5つ並んでいるアイコンの真ん中にある、緑色のチェックマークを押すと、現在選択されているセレクタの内容が画面上の(セレクタを作成するために選んだ)項目と一致するかどうかをチェックしてくれます。
こちらを定期的にチェックしながら、何を外すか、どの要素はいれるかを模索してみてください。


#9

Honoka様

詳しく解説頂きありがとうございます。
教えて頂いたチェック機能を使って一つずつ確認してみたのですが、
どうも親ウィンドウとポップアップした子ウインドウのtitleが同じで、これが原因の一つなのではないかと思います。
親ウインドウ:
html app=‘chrome.exe’ htmlwindowname=‘XXX_main’ title=‘AAA’ />
子ウインドウ:
html app=‘chrome.exe’ title=‘AAA’ />
になっており、この状態でウインドウを操作しようとすると親ウインドウの方が動いてしまいます。
なので、htmlwindownameがない方を選択する方法があれば、子ウインドウの方を選択できるかも知れないと思うのですが・・・


#10

こんにちは

どうも親ウィンドウとポップアップした子ウインドウのtitleが同じで、これが原因の一つなのではないかと思います。

ウインドウの参照先URLが違うなら、セレクターのhtml要素内にurl属性を加えてやると良いかもしれません。
たとえばこんなイメージです。

<html app=‘chrome.exe’ title=‘hoge’ url=‘http://example/hoge/*’ />

いかがでしょうか?


Webアプリの子画面が操作できない
#11

Yoichi様
回答ありがとうございます。

子ウインドウのURLを追加してみましたが、
「The selector is not valid」と表示され、うまくいきませんでした。


#12

こんにちは

UiExplorer上でもurl属性の表示が無い状態でしょうか?
正しく識別できていれば以下みたいな感じで見れると思うのですが。


#13

Yoichi様

ありがとうございます!出来ました。
先ほどはセレクターに直接書いていたのですが、右側のurlをチェックする形で追加したら、クリックできました。