考虑以下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是如何工作的?
答案 0 :(得分:4)
特定行/列
听起来你已经计算出了你想要的行/列。您只需执行以下操作即可获取特定行/列索引处的单元格:
browser.table[row_index][column_index]
其中row_index
和column_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
如果有帮助,或者您有特定的例子,请告诉我。