Ruby on rails 网页上文本行的测试顺序-Rspec&;铁轨中的水豚

Ruby on rails 网页上文本行的测试顺序-Rspec&;铁轨中的水豚,ruby-on-rails,testing,rspec,capybara,Ruby On Rails,Testing,Rspec,Capybara,也许我错过了显而易见的 我可以很容易地测试网页上是否有文本 有没有一种简单的方法来测试div或web页面中列出的项目的顺序,比如从上到下 所以,如果我期待 这个 那 另一件事 还有一件 。。。按该顺序显示。是否有可以调用的匹配器或测试方法来检查网页内容?如果显示如下内容,则应失败: 这个 另一件事 那 还有一件 如果显示顺序与html中的相同,例如: <div id="one">This</div> <div id="two">That</div>

也许我错过了显而易见的

我可以很容易地测试网页上是否有文本

有没有一种简单的方法来测试div或web页面中列出的项目的顺序,比如从上到下

所以,如果我期待

  • 这个
  • 另一件事
  • 还有一件
  • 。。。按该顺序显示。是否有可以调用的匹配器或测试方法来检查网页内容?如果显示如下内容,则应失败:

  • 这个
  • 另一件事
  • 还有一件

  • 如果显示顺序与html中的相同,例如:

    <div id="one">This</div>
    <div id="two">That</div>
    <div id="three">The other thing</div>
    <div id="four">And one more item</div>
    

    元素的顺序应与它们在文档中出现的顺序相同。我自己测试过。

    您可以使用CSS或XPath选择器:

    expect(page.find('li:nth-child(1)')).to have_content 'This'
    

    另请参见:
    作为一种变体:

     expect(some_el).to have_text(/This .+ That .+ The other thing .+ And one more item/)
    

    您可以使用RSpec匹配器/索引执行类似的操作

      def items_in_order
        page.body.index('This').should < page.body.index('That') &&
            page.body.index('That').should < page.body.index('The other thing') && 
                page.body.index('The other thing').should < page.body.index('And one more item')
      end
    
    按顺序定义项目
    page.body.index('This')。应
    page.body.index在within()块中似乎不起作用
      def items_in_order
        page.body.index('This').should < page.body.index('That') &&
            page.body.index('That').should < page.body.index('The other thing') && 
                page.body.index('The other thing').should < page.body.index('And one more item')
      end