我无法使用rspec / capybara扩展accordeon部分

时间:2017-01-18 20:11:24

标签: rspec capybara

我一直在苦苦挣扎一段时间,但无法自己找到解决方案或使用谷歌提供好的提示。

这是我的手风琴代码

<div class="panel-group" id="accordion" >
  <div class="panel panel-default">
    <div class="panel-heading">
      <h4 class="panel-title">
        <a href="collapse1" data-toggle="collapse" data-parent="#accordion" aria-expanded="true" aria-controls="collapse1" id="OT">
          Oude Testament
        </a>
      </h4>
    </div>
and so on for the underlying text and the second panel

我尝试使用rspec / capybara中的以下代码打开它:

x = page.find_by_id('OT')
click_on(x)

或者

x = page.find_link('Oude Testament')
click_on(x)

或者

x = find_link("a[href$='collapse1']")

当我调试时,我看到x被分配了,所以看起来很好。 但是我从来没有看到手风琴开启(虽然它在浏览器中可以正常工作)。

任何提示?

1 个答案:

答案 0 :(得分:0)

click_onclick_link_or_button的别名,来自文档 - http://www.rubydoc.info/gems/capybara/Capybara/Node/Actions#click_link_or_button-instance_method - 获取链接或按钮的ID,文本或值,它不带元素。因此,假设您使用的是JS驱动程序(不是机架测试),您应该能够使用以下任何一种

page.click_on('OT')
page.click_on('Oude Testament') 
page.click_link('OT')
page.click_link('Oude Testament')
page.find_link('OT').click
page.find_link('Oude Testament').click

你的第三次尝试(find_link(&#34; a [href $ =&#39; collapse1&#39;]&#34;))正在将CSS选择器传递给find_link,但它并没有这样做。从文档 - http://www.rubydoc.info/gems/capybara/Capybara/Node/Finders#find_link-instance_method - 它需要链接的ID或文本。它还支持:href选项,因此要匹配您尝试执行的操作,

page.find_link(href: /collapse1$/).click

将来请发布您尝试的实际错误,因为它会让人们更容易为您提供答案。