我非常习惯使用黄瓜进行自动化测试。到目前为止,我所做的任务只需要将值填入表格并比较预期结果。
我想知道不是填写值,黄瓜会反过来读取值吗?
想象一下网页上有一列ID的表格(如下图所示)。我想读取该表的所有ID并将其存储在列表中。原因是我希望最终通过ID列表再次在桌面上查找并单击每个ID的View链接。这可能听起来很奇怪,但那时还有更多。现在我只需要知道我是否可以在第2列中收集ID并将其粘贴到列表中然后遍历列表。
这可能吗?
我对黄瓜自动化测试的了解是,它用于广泛的低级接口回归测试。就像简单繁重的任务一样。我想做的是否超出了黄瓜的范围?
我正在使用黄瓜,红宝石和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>
答案 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