Нажав на вход с капибары - PullRequest
0 голосов
/ 06 апреля 2019

Мне было интересно, как нажать на вход в капибаре.

Пока я пробовал

click_on('#js-emu-submit.button.pl3.pr3.mb0.mr1')
click('js-emu-submit')
find('input', exact_text: 'Get an Estimate', match: :first).click

Ни один из них не работал

ЭтоHTML с веб-страницы.

<input type="submit" name="commit" value="Get an Estimate" id="js-emu-submit" class="button pl3 pr3 mb0 mr1" data-disable-with="Get an Estimate">

Мне просто интересно, как нажать на элемент.

1 Ответ

0 голосов
/ 06 апреля 2019

Глядя на документы для 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
...
...