我知道使用下面的代码我们可以得到watir中的整行文本

# row 2 - entire text
table1 = browser.table(:id => "table")
puts table1[1].text

我们怎样才能得到这样的整列文本?

最佳答案

有一些内置的方法来帮助获取列数据,但是watir webdriver和watir classic之间有区别。
假设我们正在处理这个表:

<table>
  <tr>
    <td>1a</td>
    <td>1b</td>
  </tr>
  <tr>
    <td>2a</td>
    <td>2b</td>
  </tr>
</table>

解决方案-Watir WebDriver和Watir Classic
table类有一个strings方法,该方法将表的文本作为2d数组返回。数组是由行组成的,但是可以使用transpose使其成为列。
columns = browser.table(:id => "table").strings.transpose
p columns[0]
#=> ["1a", "2a"]
p columns[1]
#=> ["1b", "2b"]

解决方案-Watir Classic
在watir classic中,table类还有一个内置的column_values方法,这意味着您可以简单地执行以下操作:
p browser.table(:id => "table").column_values(0)
#=> ["1a", "2a"]
p browser.table(:id => "table").column_values(1)
#=> ["1b", "2b"]

解-迭代
当然,您也可以遍历每一行并收集每一列中的单元格:
p browser.table(:id => "table").trs.collect{ |tr| tr[0].text }
#=> ["1a", "2a"]
p browser.table(:id => "table").trs.collect{ |tr| tr[1].text }
#=> ["1b", "2b"]

关于ruby - 使用Watir获取表的整个列文本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25035136/

10-15 09:50