エラー発生時に該当画面のスクリーンショットを撮るようにしています。
社内システムを順番にクリックで進んでいくシナリオで、セレクターが見つからずにエラーとなった場合にブラウザーのタブが別のタブ(一つ左のタブ)に移動しており、その画面のスクリーンショットを取得してしまいます。
タブの移動のアクティビティなど設定していないので、クリックの場所が見つからないために移動しているものだと思うのですが、何が影響してタブ移動しているのかも分かりません。
タブ移動をしないようにするには、何か設定等あるのでしょうか??
ブラウザのタブが複数開いてると、セレクターが変わります。
下記のセレクターは、Googleトップページを2つのタブで開いている時の、2つ目のタブを指定しています。
<html app='chrome.exe' title='Google' idx='2' />
<webctrl tag='INPUT' aaname='検索' />
要点はセレクターの1行目の idx=‘2’ です。
タブの数でインデックス ( idx )が変わることに注意してください。
とりあえずでよければ、idx=‘*’ を指定すれば、タブの数に関係なく動くようにはなります。
早速の回答ありがとうございます。
セレクター内容を確認しましたが、エラーになった「クリック」のセレクターは下記のようになっておりました。ご指摘のidxは入っておりません。
html app=‘msedge.exe’ title=‘社内システム名’ /
webctrl tag=‘A’ aaname=‘社内システムメニュー名’ /
このクリックアクティビティがエラーになった際に、下記のエラーメッセージが出力されるのですが、[84%] の方のシステムのタブへと画面が切り替わってしまいます。
「セレクター タグの検索に失敗しました:
[1] html app=‘msedge.exe’ title=‘社内システム名’ /
webctrl tag=‘A’ aaname=‘社内システムメニュー名’ /
見つかった最も近い一致は次のとおりです:
[88%] html app=‘msedge.exe’ title=‘社内システム1’/
[84%] html app=‘msedge.exe’ title=‘社内システム2’/
idxがない場合は、デフォルトでidx='1’が指定されます。
そもそも、セレクターのtitleの指定が異なるのがエラーの原因ではないでしょうか。
title=‘社内システム名’
title=‘社内システム1’
title=‘社内システム2’
「社内システム名」のタブ自体は存在してますでしょうか?
今回は「エラーになった際にエラー画面のスクリーンショットを取得する」ということが目的でして、わざとエラーが出るよう、シナリオ最後のクリックのみ別システムのメニューをクリックさせるよう作成しておりました。
想定では、直前までクリックを進めていたシステムの画面を取得すると思っていたのですが、なぜかエラーと同時に一つ左のタブに移動、その画面をスクリーンショットを取得してしまい、「システム画面がどこまで進んだか」というのを確認することができませんでした。
なぜ隣のタブに移ったかという理由も知りたいのですが、直前までの作業画面を取得したいというところが今回の質問の意図となります。分かりづらく申し訳ございません。
なぜかエラーと同時に一つ左のタブに移動
このブラウザの挙動は、目視で確認したのでしょうか?
私の個人的な経験の限りでは、「クリック」アクティビティのエラーが原因で隣のタブに移るような事象は起きないと思いますが、、、何か別の要因がありそうです…。
簡単な対処方法でよければ、「アクティベート」アクティビティで指定のタブに切り替えることができます。
事象、再現できました。
「スクリーンショット」アクティビティで指定しているセレクターの影響で、タブが切り替わります。
「スクリーンショット」のセレクターを見直してみてください。
(PC画面全体をスクリーンショットしたい場合は、セレクターを空にすればOKです。)
なぜかエラーと同時に一つ左のタブに移動
各タブのセレクターは、左から順にidxが1,2,3…です。
下記のように未指定の場合は、 idx='1’として扱われます。
<html app='msedge.exe' title='社内システム名' />
<html app='msedge.exe' title='社内システム名' idx='1' />
左から2番目のタブのセレクターは下記のようになります。
<html app='msedge.exe' title='社内システム名' idx='2' />