我有一个包含多个列的表,其中数据从数据库中填充。列可以包含下拉菜单,文本字段,复选框以及简单文本。我需要写下一个函数,它基本上会返回表列中的数据。
以下是关于如何在网页中命名标记的示例。 [w3schools为表格的CSS提供的信用]。
<html>
<head>
<style type="text/css">
#customers
{
font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;
width:100%;
border-collapse:collapse;
}
#customers td, #customers th
{
font-size:1em;
border:1px solid #98bf21;
padding:3px 7px 2px 7px;
}
#customers th
{
font-size:1.1em;
text-align:left;
padding-top:5px;
padding-bottom:4px;
background-color:#A7C942;
color:#ffffff;
}
#customers tr.alt td
{
color:#000000;
background-color:#EAF2D3;
}
</style>
</head>
<body>
<table id="customers">
<tr>
<th>Company</th>
<th>Contact</th>
<th>Country</th>
</tr>
<tr class="data-row">
<td id="customers:0:company">Alfreds Futterkiste</td>
<td id="customers:0:contact">Maria Anders</td>
<td id="customers:0:chooseCountry">
<select id="customers:0:country">
<option>Germany</option>
<option>Sweden</option>
<option>Mexico</option>
</select>
</td>
</tr>
<tr class="data-row alt">
<td id="customers:1:company">Berglunds snabbköp</td>
<td id="customers:1:contact">Christina Berglund</td>
<td id="customers:1:chooseCountry">
<select id="customers:1:country">
<option>Germany</option>
<option selected="selected">Sweden</option>
<option>Mexico</option>
</select>
</td>
</tr>
<tr class="data-row">
<td id="customers:2:company">Centro comercial Moctezuma</td>
<td id="customers:2:contact">Francisco Chang</td>
<td id="customers:2:chooseCountry">
<select id="customers:2:country">
<option>Germany</option>
<option>Sweden</option>
<option selected="selected">Mexico</option>
</select>
</td>
</tr>
</table>
</body>
</html>
现在,我用来确定列中所有值的算法说“公司”是
现在,如果我在select_list上使用它,它将返回列表中的所有选项。因此,我将检查标记的子项是文本字段还是下拉列表 列出并调用各自的函数来获取它们的值。
有没有办法在Watir中我们可以确定特定标签的子代是否是特定标签,或者是否有类似于JavaScript中的getAllChildNodes的方法?
对于过度描述而感到抱歉,并提前感谢任何可能的解决方案。
答案 0 :(得分:4)
这很简单,您只需要查看text_field或select_list是否存在:
require 'watir-webdriver'
b = Watir::Browser.start 'yourwebpage'
b.table.rows.each do |row|
row.cells.each do |cell|
if cell.text_field.exist?
puts cell.text_field.value
elsif cell.select_list.exist?
puts cell.select_list.selected_options
else
puts cell.text
end
end
end
b.close