1

考虑以下 html http://www.carbide-red.com/prog/test_table.html

我已经确定我可以使用在列上从左到右移动

browser.td(:text => "Equipment").parent.td(:index => "2").flash

在包含“设备”的行上闪烁第 3 列

但是我怎样才能向下移动一定数量的行呢?我在使用 .tr 和 .rows 时运气不佳,无论我如何尝试,在使用它们时它都会崩溃。甚至像这样简单的事情

browser.tr(:text => "Equipment").flash

我只是误解了 tr/row 的工作原理吗?

4

1 回答 1

4

特定行/列

听起来您已经计算出您想要的行/列。您只需执行以下操作即可获取特定行/列索引处的单元格:

browser.table[row_index][column_index]

其中row_indexcolumn_index是您想要的行和列的整数(请注意,它是从零开始的索引)。

特定行

您还可以执行以下操作以根据索引选择行:

browser.table.tr(:index, 1).flash 
browser.table.row(:index, 2).flash

请注意,.tr包括嵌套表,而.row忽略嵌套表。

更新 - 在特定行之后查找行

要在包含特定文本的特定行之后查找行,请先确定特定行的索引。然后,您可以找到与其相关的其他行。这里有些例子:

#Get the 3rd row down from the row containing the text 'Equipment'
starting_row_index = browser.table.rows.to_a.index{ |row| row.text =~ /Equipment/ }
offset = 3
row = browser.table.row(:index, starting_row_index + offset)
puts row.text
# => CAT03 ...

#Get the 3rd row down from the row containing a cell with yellow background colour
starting_row_index = browser.table.rows.to_a.index{ |row| row.td(:css => "td[bgcolor=yellow]").present? }
offset = 3
row = browser.table.row(:index, starting_row_index + offset)
puts row.text
# => ETS36401 ...

#Output the first column text of each row after the row containing a cell with yellow background colour
starting_row_index = browser.table.rows.to_a.index{ |row| row.td(:css => "td[bgcolor=yellow]").present? }
(starting_row_index + 1).upto(browser.table.rows.length - 1){ |x| puts browser.table[x][0].text }
# => CAT03, CAT08, ..., INTEGRA10, INTEGRA11

让我知道这是否有帮助,或者您是否有想要的特定示例。

于 2012-09-11T15:10:14.370 回答