我想迭代一个包含n个行和列的html表,如下所示:
<table class='table'>
<tbody>
<tr>
<td>Spratly Islands</td>
<td>Vietnam</td>
<td>Azerbaijan</td>
<td>Georgia</td>
</tr>
<tr>
<td>Sri Lanka</td>
<td>Israel</td>
<td>Cyprus</td>
<td>Yemen</td>
</tr>
<tr>
<td>Maldives</td>
<td>Kuwait</td>
<td>West Malaysia</td>
<td>Nepal</td>
</tr>
...
</tbody>
</table>
我想使用xpath获取每行的列名并打印它。如何在红宝石中做到这一点? 谢谢, RV
答案 0 :(得分:2)
要在ruby中迭代表,请使用以下代码
我假设第一行在索引1中。
driver.find_elements(xpath: "//table[@class='table']//tr").each.with_index(1) do |_,index|
driver.find_elements(xpath: "//table[@class='table']//tr[#{index}]/td").each do |cell|
puts cell.text
end
puts '*****'
end
我建议你移动WATIR,它是Ruby Selenium-Binding的非常好的包装器,它实际上具有表迭代的语法,
在WATIR中,你可以做到,
b.table(class: 'table').rows.each do |row|
row.cells.each do |cell|
puts cell.text
end
puts '*****'
end