单击带有水豚的输入

时间:2019-04-06 11:11:38

标签: html css ruby capybara

我想知道如何单击水豚中的输入。

到目前为止,我已经尝试过

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 :(得分:0)

查看click_on-https://www.rubydoc.info/gems/capybara/Capybara/Node/Actions#click_link_or_button-instance_method的文档-您会发现它是click_buttonclick_link的组合,并说要检查每个文档的类型接受的定位器。查看click_buttonhttps://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

另一种选择是仅在位于另一种方式的元素上使用clickclick不使用定位符-https://www.rubydoc.info/gems/capybara/Capybara/Node/Element#click-instance_method-从而说明了您第二次尝试不起作用的原因,并且input元素内没有子文本,从而解释了您第三次尝试不起作用的原因不行可以使用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
...