😽

Capybara::Cuprite::MouseEventFailed

2022/08/27に公開
Capybara::Cuprite::MouseEventFailed: Firing a click at coordinates [57.0, 859.1875] failed. Cuprite detected another element with CSS selector "none" at this position. It may be overlapping the element you are trying to interact with. If you don't care about overlapping elements, try using node.trigger("click").

こんな感じのエラーが出てしまってボタンを押せない時の回避策。

スクロールが発生してうまくボタンを押せていないから起こっているらしい

3つ程見つけた

disable-smooth-scrolling を設定する

ここに書いてあった最終的に採用した解決策
Driverを生成する時にオプションを指定する

Capybara.register_driver(:cuprite) do |app|
  Capybara::Cuprite::Driver.new(
    app,
    **{
      window_size: [1200, 800],
      browser_options: {
        'disable-smooth-scrolling' => true
      },
      process_timeout: 10,
      inspector: true,
      headless: !ENV["HEADLESS"].in?(%w[n 0 no false])
    }
  )
end

Windowサイズを変更する

Capybara.register_driver(:cuprite) do |app|
  Capybara::Cuprite::Driver.new(
    app,
    **{
      window_size: [1200, 1200],
      browser_options: {},
      process_timeout: 10,
      inspector: true,
      headless: !ENV["HEADLESS"].in?(%w[n 0 no false])
    }
  )
end

trigger('click') を使う

エラーメッセージに書いてある通り

- click_button('登録する')
+ find_button('登録する').trigger('click')

Discussion