watir - 如何避免为复选框弃用页面对象

标签 watir watir-webdriver pageobjects page-object-gem

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

DEPRECATION WARNING
You are calling a method named checkbox at commentPage.rb:23:in `block in delete_comment'.
This method does not exist in page-object so it is being passed to the driver.
This feature will be removed in the near future.
Please change your code to call the correct page-object method.

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

我正在寻找避免这种情况的方法,但它看起来很复杂。

为了测试,我正在检查一个页面,上面有一个表格。每行显示一行,我需要选中特定行的复选框。

我在 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

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

最佳答案

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

row.checkbox_element.check

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

关于watir - 如何避免为复选框弃用页面对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12479624/

相关文章:

javascript - 通过 Javascript 控制 Firefox 扩展

jruby - Windows/JRuby 上的 headless 驱动程序?

java - 将 WebElement 作为参数传递给隐式等待方法

javascript - 从 WebdriverIO 中的基本 pageobject 页面调用方法时出现 "is not a function"错误

css - Watir/Cucumber 无法定位元素 : dd-field div. dd-arrow-box(使用 CSS 选择器*

ruby - 找到了新的 Select_list 并且不知道如何为此编写代码

ruby - 如何选择列表中的第 6 个选项?

ruby - 如何从 Support 文件夹中的 class.rb 调用页面对象

ruby - 在 headless centOS 上使用 firefox 23 无法在 60 秒内获得稳定的 firefox 连接

angularjs - Protractor 测试: Can someone tell me what I'm doing wrong with Require?