セレクターでの変数使用(当日日付の要素をクリック)

お世話になります。

勤怠を入力するロボを作成中なのですが、入力ボタンをクリックできずに行き詰っています。
下記画像のマーカー部分がもともと日付だったのを変数にしています。
この場合セレクターをどう設定するのが良いでしょうか。

(Str_clickdate=DateTime.Nowで日付を取得しString型に代入したものです。)

こんにちは

SelectorEditorでは結合演算子による変数の組み込みはできません。
この画面で行う場合は変更したい部分(変数を組み込みたい部分)をマウスで選択(ハイライト)して右クリック→変数選択が可能ですので、こちらをお試しください。例えば以下のような感じになります。

img20200917-1

1 Like

か、

パラメタにあるテキストボックス上にある文字列をコピーし、テキストエディタ上にペースト。その中で + を使って変数を組み込み。その文字列を逆にペーストしてあげると言う、旧来の方法でもできますね

1 Like

Yoichiさん

返信ありがとうございます。
ご教示いただいた方法を試したのですが、やはりセレクターが見つからないエラーになってしまいます。
クリックしたい要素は、画面スクロールしないと出てこない位置にあるのですがそれが原因とも考えられるでしょうか?

こんにちは

エラーは実行時に発生しているのでしょうか?あるいは、SelctorEditor上でしょうか?
既存の変数を使うとその値が特定できないことから、SelectorEditorでのValidationはできませんので検証エラーになります。

もし実行時エラーとなるようでしたら、変数に格納されている値とセレクターで取得できる値を今一度確認する必要があるかと思います。このstr_clickdateは想定通りの値になっていますでしょうか?tableRowなので数字である必要があるかと思います。

1 Like

HANACCHIさん

ありがとうございます。
そのような方法もあるのですね!
新旧使いこなせることに越したこと無いと思うので、身に着けたいと思います!

1 Like

Yoichiさん

実行時にエラーになります。
str_clickdateの値は今日の日付の「17」となることを確認済です。
メッセージボックスアクティビティでも確認したのと、
エラーにも
「Click ‘BUTTON’: Cannot find the UI element corresponding to this selector:<webctrl aaname=‘入力’ parentid=‘attendance-table-body’ tableRow=‘17’ tag=‘SPAN’ />
と出て来るので、正しく取得できているかと思います。。

こんにちは

上記ですと、変数の当てはめ自体はうまくできているように思えますがいかがでしょうか?
想定してるセレクター表現と一緒であるなら、原因は他にあるかもしれません。
ちなみにこのセレクター文字列をそのまま利用すると、検証OKなのでしょうか?

1 Like

Yoichiさん

検証は、編集前はOK,編集後にNGになっています。
セレクターをいじらなければクリックできるのですが、変数を当てはめた途端エラーになってしまいます。
想定しているセレクターに出来ていますが、なぜエラーになってしまうのか原因不明です(汗

こんにちは

原因の切り分けの一つとして、クリックの前に待機を2-3秒いれてみてどうなるか見ていただくことはできますでしょうか?(変数を組み込んだ状態で) 状況からしますと変数以外の要因もありそうな気がしておりますので。

1 Like

Yoichiさん

ありがとうございます。
Delayアクティビティで3秒待機を追加しました。
変数も組み込んだ状態で実行しましたがやはりエラーになってしまいます。
エラー内容はセレクターに一致する要素が見つかりません、で前回までと同じです。

こんにちは

ありがとうございます。
手探りになりますが、あとは変数の生成部分がどうなっているかでしょうか。

可能でしたらワークフローの一部または全部を共有いただけると、他の観点でもコメントできるかもしれません。

Yoichiさん

ご多用の中ありがとうございます。
以下画像がワークフローの全体です。
変数も載せておきます。



ありがとうございます。

str_clickdate への代入の右辺ですが、

 DateTime.Now.ToString("dd")

でしょうか。今回の問題とは異なりますが、日付が一桁の時に
2桁表示になるので、問題になるかもしれません。

1 Like

Yoichiさん

仰る通り、

str_clickdate=DateTime.Now.ToString(“dd”)

です。
かといって、(“d”)ではダメですよね。
その日の日付が1桁か2桁なのかによって分岐させた方がよいのでしょうか…

日付で要素を指定するのに他に良い方法ってあるのでしょうか(汗

DateTime.Now.Day()?

1 Like

HANACCHIさん

ありがとうございます。
ご教示頂いたように右辺に代入することが出来ました!
実行したところ、セレクタで「17」をきちんと取得できているようです。

Yoichiさんの導きのおかげですね!うまく行ったら、Yoichiさんの返信の解決策にチェックをお願いしますね

1 Like

こんにちは
ありがとうございます。
ちょっと問題の切り分けが難しいので、以下ご確認可能でしょうか?

1.UiExplorerを立ち上げて、当該要素をターゲットとして指定
→日付の部分に対して変数を「作成」すると、変数の初期値を指定できますので、同様に17を設定して
左上の検証ボタンを押すとどうなるか?(変数に値が反映された形で検証されます。)

2.問題となっているクリックについて、コンテナ(OpenBrowser)の外に出して
再度セレクターを設定、変数組み込みを行うとどうなるでしょうか?

1 Like

HANACCHIさん

変数の当てはめは上手くいっているのですが、
実行時にエラーになってしまうので、クリックするに至っていません :cry:
書き方が紛らわしくてすみません(汗

1 Like