用于将readed数据加载到列表中的Cucumber脚本

时间:2013-09-11 16:13:11

标签: ruby cucumber watir

我非常习惯使用黄瓜进行自动化测试。到目前为止,我所做的任务只需要将值填入表格并比较预期结果。

我想知道不是填写值,黄瓜会反过来读取值吗?

想象一下网页上有一列ID的表格(如下图所示)。我想读取该表的所有ID并将其存储在列表中。原因是我希望最终通过ID列表再次在桌面上查找并单击每个ID的View链接。这可能听起来很奇怪,但那时还有更多。现在我只需要知道我是否可以在第2列中收集ID并将其粘贴到列表中然后遍历列表。

enter image description here

这可能吗?

我对黄瓜自动化测试的了解是,它用于广泛的低级接口回归测试。就像简单繁重的任务一样。我想做的是否超出了黄瓜的范围?

我正在使用黄瓜,红宝石和watir进行这些自动化测试。


表格的html代码:

<table id="row" class="data">
<thead>
    <tr>
        <th>Action</th>
        <th>Book ID</th>
        <th>...</th>
    </tr>
</thead>
<tbody>
    <tr class="odd">
        <td class="actionColumn">
            <input id="014112854edb_45ed_68e1d7bf" name="submit.view" class="action_link" onclick=" return setField('bookSearchResultForm','selectedId','123'); " type="submit" size="" value="View">
        </td>
        <td>123</td>
        <td>...</td>
    </tr>
    <tr class="even">
        <td class="actionColumn">
            <input id="014112854ede_52cb_3ef325a7" name="submit.view" class="action_link" onclick=" return setField('bookSearchResultForm','selectedId','444'); " type="submit" size="" value="View">
        </td>
                    <td>444</td>
        <td>...</td>
    </tr>
    <tr class="odd">
        <td class="actionColumn">
            etc etc
        </td>
        <td>443</td>
        <td>...</td>
    </tr>
</tbody>

1 个答案:

答案 0 :(得分:0)

听起来你已经在使用Cucumber来读取值 - 也就是说我假设你正在检查预期的结果。

例如,Watir可以获取表格第一列中所有值的值。

ids = @browser.table.tbody.trs.collect{ |tr| tr.td.text }

您可以在Cucumber步骤中使用它来检查表格中某处存在某些特定ID。

Then /the list of ids should include (.*)/ do |expected_id|
  ids = @browser.table.tbody.trs.collect{ |tr| tr.td.text }

  ids.should include?(expected_id)
end

请注意,您可以使用上面的Watir代码而不使用Cucumber。例如,您可以在独立脚本中使用它来从页面中抓取信息,帮助您在手动测试期间收集信息等。

更新 - 查看链接:

将黄瓜放在一边,获取id列表以迭代查看链接将是:

# Get the 2nd cell value in each row
ids = @browser.table.tbody.trs.collect{ |tr| tr.td(:index => 1).text }

# Click through each view link
ids.each do |id|
  # Find the row that contains the id
  row = @browser.table.tbody.trs.find{ |tr| tr.td(:text => id).present? }

  # Click the link in that row
  row.button(:text => 'View').click

  # Do whatever you want on the other page
  # Then make sure to return to this page
end