2

我从一年开始就使用黄瓜,几周后我就在其中添加了 page-object-gem。当我执行测试时,我收到消息:

弃用警告
您正在commentPage.rb:23:in `block in delete_comment'中调用一个名为checkbox 的方法。
此方法在页面对象中不存在,因此它被传递给驱动程序。
此功能将在不久的将来删除。
请更改您的代码以调用正确的页面对象方法。

(我对其他情况也有同样的看法,但这个“微不足道”的例子应该更容易解释)

我寻找一种方法来避免这种情况,但这似乎很复杂。

对于测试,我正在检查一个页面,上面有一张桌子。每行显示一行,我需要检查特定行的复选框。

我在 pageObject 中的代码:

table(:comment_list, :class => 'comments')
button(:delete, :text => "Delete")

def delete_comment (text)
  self.comment_list_element.each do |row|
    if row.text.include? "#{text}"
      row.checkbox.set
      self.delete
      return true
    end
  end
  false
end

我是否需要对我的桌子进行预处理才能在测试期间使用它?

4

2 回答 2

5

您收到警告是因为您正在调用 Watir 上的方法而不是页面对象(checkbox表格行上的方法)。如果您想访问 Checkbox,您可以简单地调用将返回嵌套元素的方法。这会将调用的那部分更改为row.checkbox_element. 但是你下一个电话也会遇到同样的问题。首先,setCheckBox 上不存在该方法。在页面对象中,方法是checkuncheck。完整的电话应该是:

row.checkbox_element.check

您收到弃用错误的原因是因为我计划将来删除对底层驱动程序的调用转发。这种能力在复杂的情况下确实会引起很多问题。

于 2012-09-19T00:39:11.933 回答
1

在您的代码中,row是 a PageObject::Elements::TableRow,它没有checkbox定义方法。我没有遇到任何链接页面对象元素的示例。

作为一种解决方法,您可以通过执行以下操作将其转换PageObject::Elements::TableRow为常规Watir::TableRow

row.element

因此,如果您这样做,您的代码将起作用:

row.element.checkbox.set
于 2012-09-18T21:23:08.457 回答