如何使用selenium和ruby迭代Web表

时间:2018-01-26 18:39:18

标签: ruby selenium xpath selenium-webdriver html-table

我想迭代一个包含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

1 个答案:

答案 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