2011-09-21 15 views
0

我有一个HTML代码看起来像这样...我怎样才能标记为“日”一表头的单元格文本/数据信息使用的Watir

<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它显示

未定义的方法`指数”

,我不能打印文本,以及当我想用“”标签打印的东西,但是这个代码是好的,当我打印一个单元格的文本“”标签

+0

你得到了什么?你期望什么? –

+0

这是被问到的方式很难弄清楚你想要完成什么。也许如果你能在更高的层次上解释为什么你需要找到这个头,为什么头的索引很重要? –

回答

0

看起来你应该只补充一点:

puts cell.index 
+0

他的工作方式,是不是'索引'它是在他的循环内自己的对象?也许“提升指数”会起作用吗? –

0

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

puts index 

你所得到的错误是因为没有所谓的.index方法的定义细胞对象。

工作方式.each_with_index的作用是,它允许你传递两个东西到块中,从集合中提取的对象(在本例中为'cell'),第二个变量是集合中对象的索引。在你的情况下,你调用了这个变量“index”,虽然通常使用“i”作为迭代器或索引值是很常见的。

因此,而不是试图调用的.index细胞对象(即不存在的方法),你只是需要使用第二个变量的名称被传递到做循环

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

BTW :我想有可能创建这样的方法,但问题是对象很难知道它自己的索引,因为索引是相对于某个外部容器的。例如,一个单元格可能是表中的第15个单元格,一行中的第7个单元格,第24个单元格在一个div中,而第42个单元格在另一个div中。所以,如果你要在这样一个单元格上调用.index,它将如何知道应该返回的那些索引(或许多其他索引)的哪一个?

相关问题