Selenium で Element hoge is not clickable at point の時はスクロールしてみると良いかも(Ruby)

Selenium WebDriver でラジオボタンをクリック(選択)しようとしているのに、何故だか全然クリックできない。

# ラジオボタンを下記でクリック
driver.find_element(:xpath, '//*[@id="form"]/tbody/tr[44]/td/p[2]/label[2]/span').click

とするとエラーがでる。

Element  is not clickable at point (329.4166793823242,793.3333129882812) because another element <html class=""> obscures it (Selenium::WebDriver::Error::ElementClickInterceptedError)

「クリックできません、何故なら何かによって覆い隠されているから」ということのよう。

最初はラジオボタンに対して .click が使えないのかと考え .send_key(Key.SPACE) とかしてみた(スペースちゃんと送れているかわからないけど)けどラジオボタンは選択できず。

クリックする要素はブラウザに表示させる

結局は、 .click が走る時にブラウザウィンドウ上にラジオボタンが表示されていないことが問題だったらしい。ウインドウによって覆い隠されてるよ、ということなのね。

クリックしたいラジオボタンより、下の方にある要素まで適当にスクロールさせることでクリックされるようになりました。

driver.find_element(:class_name, 'fuga').location_once_scrolled_into_view

フォームの入力とかは自動でスクロール追従してくれるみたいなんですけどね。

※ selenium-webdriver 3.14.0

コメントを残す

  • コメント欄には個人情報を入力しないようにしてください。

  • 入力いただいたメールアドレスは公開されませんがサーバーに保存されます。
  • 入力いただいた情報の他に、IPアドレスを取得させていただきます。取得した IPアドレス はスパム・荒らしコメント対処ために利用され、公開することはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください