8

我将 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

4 回答 4

11

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

it "should have pagination" do
  page.should have_css('div.pagination.pagination-centered')
end
于 2012-09-29T14:59:41.057 回答
7
expect(page).to have_selector :css, 'nav li.active'
于 2015-12-22T10:04:00.610 回答
1

关于OP:

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

它{应该有_选择器('div.pagination')}

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

< div class="分页" >

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

它 { 应该有_selector('div', :class => 'pagination') }

现在它通过了。

于 2013-07-27T18:19:38.587 回答
1

在尝试(并且测试失败)本页上的早期示例之后,这最终对我有用(也将 Capybara 与 Rspec 一起使用):

    it { should have_selector('div', 'pagination.pagination-centered') }
于 2013-09-10T02:42:52.650 回答