【问题标题】:Rspec + Capybara: check existence of tag with it's css classRspec + Capybara:用它的css类检查标签的存在
【发布时间】:2015-12-22 18:11:24
【问题描述】:

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

两者都不起作用。我该如何解决这个问题?

【问题讨论】:

    标签: css rspec capybara


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:
      expect(page).to have_selector :css, 'nav li.active'
      

      【讨论】:

        【解决方案3】:

        关于 OP:

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

        它 { 应该有_selector('div.pagination') }

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

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

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

        现在它通过了。

        【讨论】:

        • 这是唯一对我有用的解决方案,谢谢!
        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 2016-02-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-10-05
          相关资源
          最近更新 更多