如何使用watir获取标记为“th”的表头的单元格文本/数据信息

时间:2011-09-21 07:44:18

标签: watir

我的html代码看起来像这样......

<tr>
  <th width="40">Header</th>
</tr>

如何获取此特定单元格的索引号和文本

我尝试过以下代码。

BROWSER.table(:class,"head").row(:index,2).cells.each_with_index do |cell,index|
            puts cell.text

     end 

非常感谢您快速回复......

但是当我使用cell.index时它会显示

未定义的方法`index'

当我想打印带有“”标签的东西时,我无法打印文本,但是当我打印带有“”标签的单元格的文本时,此代码是可以的

2 个答案:

答案 0 :(得分:0)

看起来你应该只添加这个:

puts cell.index

答案 1 :(得分:0)

使用您提供的代码,您需要使用

puts index

您得到的错误是因为没有为单元格对象定义名为.index的方法。

.each_with_index的工作方式是它允许你将两个东西传递给块,从集合中提取的对象(在本例中为'cell')和第二个变量,它是集合中对象的索引。在您的情况下,您将此变量称为“索引”,尽管通常使用“i”作为迭代器或索引值非常常见。

因此,您不必尝试在单元格对象上调用.index(不存在的方法),而只需使用传递给do循环的第二个变量的名称

BROWSER.table(:class,"head").row(:index,2).cells.each_with_index do |cell, i|
  puts i
  puts cell.text
end 
BTW:我想可能有可能创建这样一个方法,但问题是对象很难知道它自己的索引,因为索引是相对于某个外部容器的。例如,一个单元格可能是表格中的第15个单元格,一行的第7个单元格,以及一个div中的第24个单元格,但是另一个div中的第42个单元格。所以如果你要在这样一个单元格上调用.index,它怎么知道它应该返回哪些索引(或许多其他索引)?