对于一个似乎是一个简单问题的问题,我已经在这个问题上花费了很长时间,似乎无法在谷歌上找到任何东西。我有这个按钮我需要点击哪个没有id但是包含了一个类
<button class="filter-case-studies" onclick="initBootpag(filterForContentType('CASE STUDIES', searchHits))" type="button">
<b>CASE STUDIES</b>
(2)
</button>
我尝试使用click_on
,我现在知道它只适用于链接和按钮,所以当然不会起作用。这就是我到目前为止所做的:
When(/^I filter the results to only see case studies$/) do
click_on('filter-case-studies')
end
我也试过page.find('filter-case-studies').click
,这也行不通。
page.find(:class, 'filter-case-studies').click
默许:css所以这对我来说也失败了。
是否无法按照Capybara中的班级名称点击元素?
提前感谢您的帮助。
答案 0 :(得分:19)
在Capybara执行此操作的标准方法是
find('button.filter-case-studies').click
在相对较新版本的Capybara中你也应该能够做到
click_on(class: 'filter-case-studies')
答案 1 :(得分:0)
find('.filter-case-studies').click
,如此处推荐的https://robots.thoughtbot.com/write-reliable-asynchronous-integration-tests-with-capybara#find-the-first-matching-element
答案 2 :(得分:0)
我有一个使用上述方法找不到的按钮(Unable to find visible link or button nil with classes [close-modal]
。
这对我有用:page.execute_script('$.find(".close-modal")[0].click()')
答案 3 :(得分:-1)
click_on('.filter-case-studies')
您需要.
选择器用于类,#
用于ID。
答案 4 :(得分:-1)
感谢Schutte先生提出使用.
选择器的想法。
我最后必须使用page.find(:class, '.filter-case-studies').click
。绝对导航栏妨碍了按钮,因此我必须包含page.execute_script "window.scrollBy(0,500)"
才能完成测试。