红宝石。黄瓜,用Xpath写一些步骤

时间:2012-03-25 12:01:20

标签: ruby cucumber capybara

我有以下HTMl。

<table id="movies">
 <thead><tr>
  <th><a href="/movies?ratings%5BPG%5D=1&amp;ratings%5BR%5D=1&amp;sort=title" id="title_header">Movie Title</a></th>
  <th>Rating</th>
  <th><a href="/movies?ratings%5BPG%5D=1&amp;ratings%5BR%5D=1&amp;sort=release_date" id="release_date_header">Release Date</a></th>
  <th>More Info</th>
 </tr></thead>
<tbody>
 <tr>
  <td>The Terminator</td>
  <td>R</td>
  <td>1984-10-26 00:00:00 UTC</td>
  <td><a href="/movies/2">More about The Terminator</a></td>
 </tr>
 <tr>
  <td>When Harry Met Sally</td>
  <td>R</td>
  <td>1989-07-21 00:00:00 UTC</td>
  <td><a href="/movies/3">More about When Harry Met Sally</a></td>
 </tr>
 <tr>
  <td>Amelie</td>
  <td>R</td>
  <td>2001-04-25 00:00:00 UTC</td>
  <td><a href="/movies/6">More about Amelie</a></td>
 </tr>
</tbody>
</table>

现在,我想在我的Cucumber中编写步骤,以检查指定的“评级”(第二列)是否在页面上。

所以,我写了这个(这是我的步骤定义的更大代码的一部分,但我检查,一切都可以工作到这个地方):

  txt = "//table[@id='movies']/tbody//td[2]"
  page.all(:xpath, txt) do |element|
    debugger
    puts element.text
  end

然而,似乎存在一个小错误,因为我从未进入此页面。所有块...例如,没有调试器调用。

感谢任何帮助:)

1 个答案:

答案 0 :(得分:0)

在一些冥想的分钟后,我的脑海里的问题得到了解决:) 我只需要在最后给出.each。

txt = "//table[@id='movies']/tbody//td[2]"
 page.all(:xpath, txt).each do |element|
 debugger
 puts element.text
end