是否可以动态创建页面对象元素

时间:2013-12-03 20:03:18

标签: ruby cucumber watir watir-webdriver page-object-gem

我正在使用Cheezy的页面对象gem。它在大多数情况下运行得非常好,但在使用动态创建的元素时我似乎无法使用它。我有一种通过将单元格的文本内容传递给方法并在操作时识别元素来单击单元格的方法

def select_row (row_contents)
    cell(:row, :text => /#{row_contents}/i)
    self.row.click
end

我很确定这不起作用,因为该元素在运行时没有为它生成方法。有人能告诉我一种以这种方式动态创建带有页面对象的元素的方法吗?

2 个答案:

答案 0 :(得分:3)

def select_row (row_contents)
    self.class.cell(:row, :text => /#{row_contents}/i)
    self.row_element.click
end

更改是,cell方法应在class的{​​{1}}上调用,因为它是类级方法

答案 1 :(得分:3)

请注意,您可以使用NestedElements找到与Watir类似的元素。您的方法可以简单地写成:

def select_row(row_contents)
  cell_element(:text => /#{row_contents}/i).click
end