Ruby 在对元素调用方法时获取弃用警告-可能需要一些建议

Ruby 在对元素调用方法时获取弃用警告-可能需要一些建议,ruby,page-object-gem,Ruby,Page Object Gem,在调用页面对象元素上的方法时,我经常收到弃用警告。这向我发出信号,我可能还没有按预期使用gem。我需要一些帮助,有人能推荐一个更好的方法来处理这样的事情吗 我正在处理一个包含div列表的页面,每个div都包含一个checkbox元素。换句话说,类似这样的事情: <div class="item-checkbox"><input type="checkbox"></div> <div class="item-checkbox"><input t

在调用页面对象元素上的方法时,我经常收到弃用警告。这向我发出信号,我可能还没有按预期使用gem。我需要一些帮助,有人能推荐一个更好的方法来处理这样的事情吗

我正在处理一个包含div列表的页面,每个div都包含一个checkbox元素。换句话说,类似这样的事情:

<div class="item-checkbox"><input type="checkbox"></div>
<div class="item-checkbox"><input type="checkbox"></div>
<div class="item-checkbox"><input type="checkbox"></div>

这是可行的,但是我在第5行的checkbox.set上收到了一条弃用警告。将其更改为复选框。单击可将其清除。尽管如此,我不相信我是用“页面对象宝石”的方式来做这件事的。使用watirwebdriver,divs给了我一个数组,我可以用类似的方式完成同样的事情。有人用gem做过类似的事情吗

您需要使用
复选框。选中
,而不是
复选框。设置

这里有一个类似的SO线程供参考:


除了
复选框
元素上不存在
set
方法外,上面的内容看起来不错。相反,有
check
uncheck
checked?
方法。我认为您可以安全地将上述方法更改为:

def select_checkbox(index)
   fail "Nothing in list" unless checkboxes
   checkbox = self.checkboxes[index].checkbox_element
    if checkbox.exists?
       checkbox.check
    else
       fail "could not select a checkbox at index #{index} - check that it exists"
    end    
 end  

 protected
 def checkboxes
    div_elements(:class=> 'item-checkbox')
 end
另一种可能的方法是在类中声明div,如下所示:

class MyPage
  include PageObject

  divs(:checkbox, :class => 'item-checkbox')

  def select_checkbox(index)
     fail "Nothing in list" unless checkboxes
     checkbox_elements[index].checkbox_element.check
   end  
end
在这种情况下,您仍在检查页面上是否有复选框div。在方法的第二行中,如果复选框不存在,那么您将失败,因此它会处理您所防范的条件


-Cheezy

谢谢Cheezy,第二种方式是我一直在寻找的,因为它更符合页面对象模式。我不得不将方法块的第一行更改为
fail“Nothing in list”,除非复选框\u elements
class MyPage
  include PageObject

  divs(:checkbox, :class => 'item-checkbox')

  def select_checkbox(index)
     fail "Nothing in list" unless checkboxes
     checkbox_elements[index].checkbox_element.check
   end  
end