Глядя на документы для click_on
- https://www.rubydoc.info/gems/capybara/Capybara/Node/Actions#click_link_or_button-instance_method - вы можете видеть, что это комбинация click_button
и click_link
и говорит, чтобы проверить каждый из них для типа локатора, который он принимает.Глядя на click_button
, https://www.rubydoc.info/gems/capybara/Capybara/Node/Actions#click_button-instance_method,, вы можете увидеть, что он найдет any <input> element of type submit, reset, image, button
(который является вашим HTML-элементом) и что локатор может быть любым из id, Capybara.test_id attribute, value, or title
.Селектор CSS не является одной из таких вещей, поэтому он объясняет, почему ваша попытка click_on
не удалась.Предполагая, что ваш элемент виден на странице, тогда любой из следующих должен щелкнуть по нему
click_on 'js-emu-submit' # match on id
click_button 'js-emu-submit' # id
click_button 'Get an Estimate' # match on value - should work with `click_on` too
Другой вариант - просто использовать click
для элемента, расположенного другим способом.click
не принимает локатор - https://www.rubydoc.info/gems/capybara/Capybara/Node/Element#click-instance_method - так объясняется, почему ваша вторая попытка не работает, а элемент ввода не имеет дочернего текста внутри элемента, поэтому объясняется, почему ваша третья попытка не 'т работа.Вещи, которые должны работать с использованием click
, будут
find('#js-emu-submit').click # find element by CSS id selector and click it
find(:button, 'js-emu-submit').click # find by id using the :button selector
find('input[value="Get an Estimate"]').click # find by CSS attribute selector
...