Selectorを可変にする方法について紹介します。
普通、ClickアクティビティなどのIndicate On Screenで設定すると、Selectorは固定になり同じ場所しかClick出来ないのですが、今回はメニューの上から順番に押していきたい場合を想定して、Selectorを可変に記載する方法を紹介します。
…文章だと伝わりづらいので、例で紹介していきます。
今回の例としては、Yahooのトップ画面のニュースのタイトルを一つずつ取得してくる、というワークフローを作ってみたいと思います。
下の赤枠で囲った部分です。
普通に取得しようと思うとGet Text+Message Boxで下のような感じになります。
これで普通には取れるのですが、これだと、ニュースが変わった場合に取れなくなってしまいます。
これをSelectorを可変にして、どんなニュースであっても取れるように変えていきたいと思います。
まず、現状のGet TextのSelectorは以下となっています。
完全にニュースタイトルの内容がSelectorに含まれてしまっていますね。
これを変更するために、左下のOpen UI Explorerをクリックします。
そして、UI Explorerの画面で右上のaanameのチェックを外して、Saveをクリックします。
するとSelectorが以下のように変わっていますので、そのままOKをクリックします。
これで、UiPathを実行すると、ニュースの1つ目が取得出来るようになっています。
これで、1つ目は何になっても取得出来るようになりました。
そして今回はさらに、1つ目だけではなく下のニュースも取れるようにします。
作り方としてはGet Textアクティビティを何個も繋げて実現してもよいのですが、それではあまりきれいではないので、ループを使って実現したいと思います。
まず、Get TextとMessage BoxをWhileの中にいれます。(Whileの使い方はこちらを参照してください。)
そして先ほどのGet TextのSelectorを確認します。
その中で、idx=’1’という箇所に注目します。これは同じSelectorの中で何番目か、という数字になりますので、2つ目のニュースではidx=’2’となります。
(ほんとうにそうか気になる場合は先ほどのGet TextのSelectorを変えた手順を2番目のニュースに対してやってみてください)
なので、このidxの数字を一つずつ増やしていけば、ニュースが順番に取れるんだなーということがわかります。
というわけで、Whileの中で数字をカウントするInt型の変数を一つ作り、この数がニュースの数分(8つ)まわるまで繰り返します。
カウント変数はループを回るごとに1ずつ追加します。
そして、Get TextのSelectorの”idx=’1′”の箇所を変更します。
Selectorの画面は開かずに、右のPropatiesのSelectorのテキストボックスを直接以下のように修正します。
【修正前】
【修正後】
このように書くことで、idxの数字に変数を設定できるので、ループで回るごとに1ずつ追加されていくことになります。
ここまで修正して、実行すると、ニュースタイトルのメッセージボックスが8回表示されるようになります。
以上、Selectorを可変にする方法でした。
いろんな要素をいれてしまったので、少しわかりづらいかもしれませんが、Selectorを操れるようになると今まで出来なかったことが出来るようになる可能性がありますので、いろいろ試してみると良いかもしれません。
また、毎回idxが使えるかはわからないので、実装する際はどの値が使えそうか探してみる必要があります。