Capybara - 单击 class 名称的元素
Capybara - Click element by class name
对于一个看似简单的问题,我已经在这个问题上研究了很长时间,但似乎在 Google 上找不到任何内容。我有一个我需要点击的按钮,它没有 ID,但包含 class
<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 中点击 class 名称的元素?
在此先感谢您的帮助。
click_on('.filter-case-studies')
类 需要 .
选择器,id 需要 #
选择器。
在 Capybara 中执行此操作的标准方法是
find('button.filter-case-studies').click
在相对较新的 Capybara 版本中,您应该也可以做到
click_on(class: 'filter-case-studies')
感谢 Schutte 先生提出使用 .
选择器的想法。
最后不得不用page.find(:class, '.filter-case-studies').click
。绝对导航栏妨碍了按钮,所以我必须包含 page.execute_script "window.scrollBy(0,500)"
才能完成测试。
find('.filter-case-studies').click
此处推荐 https://robots.thoughtbot.com/write-reliable-asynchronous-integration-tests-with-capybara#find-the-first-matching-element
我有一个使用上述方法找不到的按钮 (Unable to find visible link or button nil with classes [close-modal]
)。
这对我有用:page.execute_script('$.find(".close-modal")[0].click()')
对于一个看似简单的问题,我已经在这个问题上研究了很长时间,但似乎在 Google 上找不到任何内容。我有一个我需要点击的按钮,它没有 ID,但包含 class
<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 中点击 class 名称的元素?
在此先感谢您的帮助。
click_on('.filter-case-studies')
类 需要 .
选择器,id 需要 #
选择器。
在 Capybara 中执行此操作的标准方法是
find('button.filter-case-studies').click
在相对较新的 Capybara 版本中,您应该也可以做到
click_on(class: 'filter-case-studies')
感谢 Schutte 先生提出使用 .
选择器的想法。
最后不得不用page.find(:class, '.filter-case-studies').click
。绝对导航栏妨碍了按钮,所以我必须包含 page.execute_script "window.scrollBy(0,500)"
才能完成测试。
find('.filter-case-studies').click
此处推荐 https://robots.thoughtbot.com/write-reliable-asynchronous-integration-tests-with-capybara#find-the-first-matching-element
我有一个使用上述方法找不到的按钮 (Unable to find visible link or button nil with classes [close-modal]
)。
这对我有用:page.execute_script('$.find(".close-modal")[0].click()')