Rspec + Capybara:用它的css类检查标签的存在

时间:2012-09-29 14:22:10

标签: css rspec capybara

我将Capybara与Rspec一起使用,并在我的页面上显示以下代码:

<div class="pagination pagination-centered">
  <ul>
    // ...
    <li class="last">
      <a href="/en/articles?page=2">Last »</a>
    </li>
  </ul>
</div>

我想检查一个div以“以分页为中心的分类”存在的请求。我试过这个:

it "should have pagination" do
  page.should have_selector('div#pagination pagination-centered')
end

而且:

it "should have pagination" do
  page.should have_selector('div', :class => 'pagination pagination-centered')
end

既不奏效。我该如何解决这个问题?

4 个答案:

答案 0 :(得分:10)

好的,我找到了解决方案。我应该使用have_css方法:

it "should have pagination" do
  page.should have_css('div.pagination.pagination-centered')
end

答案 1 :(得分:5)

expect(page).to have_selector :css, 'nav li.active'

答案 2 :(得分:1)

关于OP:

感谢您分享您的想法,烦恼和解决方案,ExiRe - 它帮助我找到解决自己问题的方法。虽然我自己使用Rspec,而不是使用Capybara,但我的一个测试产生了假阴性:

  

它{should have_selector('div.pagination')}

但是,在我的浏览器中检查html会告诉我:

  

&LT; div class =“pagination”&gt;

我把测试改为(有点)类似于你最初的两个实验中的后者:

  

它{should have_selector('div',:class =&gt;'pagination')}

现在它过去了。

答案 3 :(得分:1)

这是我在本页前面的例子中尝试(并且测试失败)之后最终为我工作的(也使用Capybara和Rspec):

    it { should have_selector('div', 'pagination.pagination-centered') }