如何避免页面对象被弃用的复选框

Fab*_*e31 2 watir watir-webdriver pageobjects page-object-gem

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

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

(我对其他案例也有同样的看法,但这个"琐碎"的例子应该更容易解释)

我试图避免这种情况,但这看起来很复杂.

对于测试,我正在检查一个页面,其中有一个表格.每行显示一行,我需要检查特定行的复选框.

我在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
Run Code Online (Sandbox Code Playgroud)

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

小智 5

您正在收到警告,因为您正在调用Watir上的方法而不是页面对象(checkbox表行上的方法).如果要访问Checkbox,只需调用将返回嵌套元素的方法即可.这会改变调用的那部分row.checkbox_element.但是你下次打电话也会得到同样的问题.首先,setCheckBox上不存在该方法.在页面对象中,方法是checkuncheck.完整的电话应该是:

row.checkbox_element.check

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