「クリック」コマンドが失敗した際に「指定位置クリック」コマンドに自動で変更され、ステップが実行されることがあります。このページでは「クリック」と「指定位置クリック」コマンドの違い、およびどちらのコマンドを使用するべきかについて解説します。ここではブラウザテストの「クリック」について述べていますが、モバイルアプリテストの「タップ」と「指定位置タップ」コマンドについても同様の条件となります。
「クリック」コマンドが失敗して「指定位置クリック」コマンドになる条件
別の要素がクリック対象の要素に重なっている場合に「指定位置クリック」への変更が行われます。その場合、テスト実行ログにこのように記録されます。
click([「登録する」ボタン], {})
[警告] 要素指定による操作に失敗したため、座標指定の操作でリトライします。ただし、要素の上に別の要素が重なっている場合には上にある方の要素がクリックされてしまうことがあります。
the target position: (1099, 799)
分かりやすい例ですと、ドロップダウンメニューが開いていてボタン要素の上に被さっているようなケースで「クリック」が失敗し、「指定位置クリック」に変更されます。
また、画面上は別の要素が重なっていない場合でもコード上で重なりがあるような作りとなっている場合は失敗することがあります。
<button>
<div>xxxx</div>
</button>
例えばこのケースでdiv要素をクリック対象とすると、「div要素の上にbutton要素が存在する」という判定となりクリックイベントが失敗することがあります。この場合ですとクリック対象をbutton要素に変更すると安定してクリックが成功するようになります。
「クリック」と「指定位置クリック」コマンドの違い
「クリック」コマンドについては「対象の要素に対してクリックイベントが発生したこと」が保証されます。一方で「指定位置クリック」ですとあくまでその座標でクリックする、というのみなのでクリックイベントの発生まで担保することができません。「指定位置クリック」コマンドの使用は最小限とし、「クリック」コマンドで問題なくクリックできる状態を目指すことをお勧めします。