0

我对使用黄瓜进行自动化测试相当陌生。到目前为止,我要做的任务只需要在表格中填写值并比较预期结果。

我想知道不是填写值,黄瓜可以做相反的事情并读取值吗?

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

在此处输入图像描述

那可能吗?

我对黄瓜自动化测试的了解是它用于广泛的低级接口回归测试。所以喜欢简单费力的任务。我想做的事情会超出黄瓜的范围吗?

我将 cucumber、ruby 和 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>

4

1 回答 1

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

请注意,您可以在没有 Cucumber 的情况下使用上述 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
于 2013-09-11T16:27:53.100 回答