在网页上测试文本行的顺序 - Rspec和Capybara在rails中

Per*_*ich 5 testing rspec ruby-on-rails capybara

也许我错过了明显的......

我可以轻松地测试网页上是否存在文本.

有没有一种直接的方法来测试div或网页上列出的项目的顺序,比如从上到下?

所以,如果我期待的话

  1. 这个
  2. 另一件事
  3. 还有一件事

......按顺序显示 是否有可以调用以检查网页内容的匹配器或测试方法?如果显示如下内容,它应该会失败:

  1. 这个
  2. 另一件事
  3. 还有一件事

Rim*_*ian 5

您可以使用CSS或XPath选择器来做到这一点:

expect(page.find('li:nth-child(1)')).to have_content 'This'
Run Code Online (Sandbox Code Playgroud)

http://www.w3schools.com/cssref/sel_nth-child.asp

另请参阅:http :
//makandracards.com/makandra/9465-do-not-use-find-on-capybara-nodes-from-an-array


Mar*_*kus 1

如果显示顺序与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>
Run Code Online (Sandbox Code Playgroud)

那么应该可以这样:

it "should have the right order" do
    elements = all('#one, #two, #three, #four'); # all in one selector
    expect(elements[0]['id']).to eql('one');
    expect(elements[1]['id']).to eql('two');
    expect(elements[2]['id']).to eql('three');
    expect(elements[3]['id']).to eql('four');
end
Run Code Online (Sandbox Code Playgroud)

元素的顺序应该与文档中出现的顺序相同。我自己测试了一下。