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