Ruby Watir:选择一个特定的行

时间:2012-09-11 14:24:02

标签: ruby row watir

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

我已经知道我可以使用

在列上从左到右移动
browser.td(:text => "Equipment").parent.td(:index => "2").flash

在包含“Equipement”

的行上闪现第3列

但是如何向下移动一定数量的行?我使用.tr&运气很糟糕。 .rows,无论我如何尝试它只是在使用它时崩溃。甚至像

那样简单
browser.tr(:text => "Equipment").flash

我只是误解tr / row是如何工作的?

1 个答案:

答案 0 :(得分: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

如果有帮助,或者您有特定的例子,请告诉我。