クリックに関する問題

「要素がクリックできません」エラー

ChromeDriver のクリックは、要素の最初のクライアント長方形(最初のクライアント長方形がない場合は境界クライアント長方形)の中央でのマウスクリックをシミュレートすることで機能します。ChromeDriver がクリックしようとしている場所を特定する最も簡単な方法は、Chrome DevTools を開き、クリック操作が呼び出される直前にクリックされる要素を調べることです。インスペクタで要素を選択すると、次の図のように、要素のクライアント長方形を表す青いボックスが表示されます。ChromeDriver は、最初のドライバの中央をクリックしようとします。

ChromeDriver から「Element is not clickable」というエラーがスローされる場合、原因としては、その場所が実際にはユーザーがクリックできないことが考えられます。テストするには、最初のクライアント長方形の中央にカーソルを置き、その場所がクリック可能かどうかを確認します。

上記のケースでは、テストでアンカー要素をクリックしようとしました。この場合、アンカーはクリックできません。子画像のみがクリック可能です。画像要素の margin-bottom スタイルにより、アンカー要素の中央がクリック可能な画像の境界外に入り、ChromeDriver はエラーをスローします。位置やサイズを決定する方法について詳しくは、W3 仕様をご覧ください。上記のケースを修正するには、アンカーではなく画像をクリックします。

「要素がクリックできません」というエラーは、テストを試行したときによく次のような状況で発生します。

  • クリック可能な子孫要素がアンカー境界内にないアンカーをクリックする(上記を参照)
  • 別の要素の全体または一部の下にある要素をクリックする
  • 固定オーバーレイがある場合に、画面外で要素をクリックする(要素はスクロールによってビューに表示されますが、固定オーバーレイの下でスクロールされる場合があります)。
  • 中央にあるクリックできない要素(一部のタイプの凸 SVG 要素など)をクリックする

多くの場合、こうした問題は、特定の要素の子をクリックするか、プログラムでブロック要素を削除または非表示にするか、Advanced Interactions API を使用して要素の左上からオフセットでクリックするか、JavaScript でマウスクリック イベントをシミュレートすることで解決できます。

「要素がクリックできません」エラー

これは、ChromeDriver が要素の位置を特定した後、実際にその位置でクリックを発行するまでの間に、要素の位置が変更されたために発生する可能性があります。

これが問題の原因かどうかを判断するには、クリックから例外をキャッチし、すぐに要素の現在の位置とサイズを記録します。これを ChromeDriver が報告した例外でクリックしようとした場所を比較し、異なるかどうかを確認します。その場合は、要素の移動が停止するまで待つか、もう一度クリックしてみてください。それ以外の場合は、問題を再現できる小規模なテストページでバグを報告します(問題を引き起こす可能性は低いとしても)。

ChromeDriver が移動要素をクリックできない

この機能は ChromeDriver ではサポートされていません。要素が最終的に停止する場合は、停止するまで待ちます。要素が移動を停止しない場合、ChromeDriver はクリックの成功を保証しません。