😽
Capybara::Cuprite::MouseEventFailed
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