ページの最後にある「保存」ボタンをクリックしようとすると、カピバラで同じエラーが発生しました。JS を使用して要素をスクロールして表示することは、効果的な回避策であることが証明されました。
def scroll_to(element)
script = <<-JS
arguments[0].scrollIntoView(true);
JS
Capybara.current_session.driver.browser.execute_script(script, element.native)
element # return the element
end
scroll_to(
find(:xpath, '//button[text()=\'Save\']')
).click
アップデート
私の場合、インストールされている Chrome と Chromedriver のバージョンが一致していないことが判明し、結局コードの変更は必要ありませんでした。
Chrome 61 以降には、スクロール動作の変更が含まれています。Chromedriver ページを簡単に調べたところ、これらの変更に対応するために、Chromedriver を (2.29 から 2.32 に) アップグレードする必要があることがわかりました。これは、Chromedriver 2.30 (Chrome v59-61 をサポート) リリース ノートの一部です。
- Chrome 61+ でのページ スクロールの変更により、Chromedriver がクリックに失敗するバグを修正します。