T_Hirao1
(T Hirao)
1
お世話になります。
業務アプリの自動化を行っているのですが、操作したい画面内の表データのセレクターが取れずに困っています。
セレクターが存在しない画面部品を操作する方法はあるでしょうか。
もしくは、セレクター内の文字座標を取得して、その座標に右クリック、みたいなことはできるでしょうか。
何か良い方法があれば教えてください。
■やりたいこと、詰まっていること
やりたいこと:以下の画面内の表で企業名ごとに右クリックして詳細画面を開きたい
詰まっている内容:画面内の表全体が一つのセレクターになってしまい、表データにフォーカスできない
■該当の画面イメージ
・表示ボタンをクリックすると、太線枠内に表形式でデータが表示される
・企業名ごとに(画像なら企業名Aと企業名Bの二つ)右クリックして、詳細画面を開きたい
・太線全体が一つのセレクター扱いになってしまう
・この画面自体はExcelファイルとして出力できるため、出力したファイルから右クリックしたい企業名は取得できている
■当該の太線を選択した際のUIExplorerの画面
・上記画像の太線内を選択した状態です
・画像内の青線はアプリ名が入っているので隠すために入れています。
・表データ部分は"ctrl role=‘client’ /"と表示され、それ以降にセレクターの階層がない状態です。
Yoichi
(Yoichi)
2
こんにちは
GetVisibleTextアクティビティで可能な場合がありますので一度試してみてはと思います。
(クラシックモードならScreenScrapingWizardのNativeモードでも確認できるかもしれません)
T_Hirao1
(T Hirao)
3
ご回答ありがとうございます!
頂いたアクティビティで表内の各企業名の座標を取得することはできませんでした。
ただ、周辺のアクティビティ見ていたら、実現できそうな組み合わせありました。
Excel出力でクリックする企業名はわかっているので、以下の組み合わせで企業名をクリック出来ました。
①の結果が不安定なので、③で無限ループしないかが怖いですけど、、、
もっと確実な感じのフローあればアドバイスお願いします。
①「テキストをクリック」アクティビティで指定の企業名を右クリック
②「要素の存在を確認」で右クリックしてメニューが表示されているかチェック
③「繰り返し(後判定)」でメニューが表示されるまで①②を繰り返し
④「クリック」で表示されたメニューから詳細画面をクリック
Yoichi
(Yoichi)
4
こんにちは
テキストをクリックですと対象範囲内に複数の同一文字列があった場合に、コントロールできない
ように思えますがいかがでしょうか?
T_Hirao1
(T Hirao)
5
ご指摘の通りでした。
企業名が以下の内容で、見えている範囲がクロネコヤマトだけの場合、ずっと千葉支店だけをクリックしてしまいます。。。
クロネコヤマト/千葉支店
クロネコヤマト/東京支店
Yoichi
(Yoichi)
6
こんにちは
ですのでGetVisibleTextアクティビティを使用してみてください。WordsInfoプロパティに結果が返っていませんでしょうか?
ClickTextアクティビティでもOccureneceプロパティで「何番目」を指定することはできますが、処理が煩雑になるように思えます。
T_Hirao1
(T Hirao)
7
ありがとうございます。
GetVisibleTextのWordsInfoを[変数名].Tostringでログに出すと、
UiPatj.Core.TextInfo
と返ってきます。
取り出し方間違っているでしょうか。。。?
また、Textをログに出すと、画面に表示された分の文字列が出力されますが、スクロールの範囲外の文字が出力されていなかったので、ここも詰まってしまっています。
スクロール範囲外取れないのはClickTextでも同様でした。
Yoichi
(Yoichi)
8
こんにちは
GetVisibleTextのWordsInfoを[変数名].Tostringでログに出すと、
デバッグ時にLocalsパネルで確認するか、あるいは出力を wi とすると
String.Join(vbCrLf,wi.Select(Function(x) x.Text +":" + x.Region.Rectangle.ToString))
を出力してみてください。
Textをログに出すと、画面に表示された分の文字列が出力されますが、スクロールの範囲外の文字が出力されていなかった
これは技術的制約になります。下キーやPageDownキー等を組み合わせて必要な場所に持っていく必要があります。(このケースではいずれにしても表示されていなければ右クリックもできないと思いますので)
T_Hirao1
(T Hirao)
9
ありがとうございます。
教えて頂いた方法で出力するとテキストの座標が出てきました。
ただ、ログとデバック両方ともテキストの区切りがおかしく見えます。
クロネコヤマトなら以下みたいに、単語がぶつ切りになります。
これはうまくいっているのでしょうか。
Text:クロ,TextInfo~
Text:ネコヤマ,TextInfo~
Text:ト,TextInfo~
スクロールの件承知しました。見つからなかったらトライキャッチで繰り返しフラグとPageDpwn入れるようにして対応してみます。
Yoichi
(Yoichi)
10
これはアプリ側の情報の表示のさせ方にも依存すると思いますので
意図するものと一致しない場合は、Textの情報と照らし合わせながら
処理するしかないかもしれません。
system
(system)
Closed
11
This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.