【问题标题】:How do I access Watir properties of PageObject elements?如何访问 PageObject 元素的 Watir 属性?
【发布时间】:2016-04-27 15:50:32
【问题描述】:

我是 PageObject 的新手,但我以前使用过 Watir。我有一个登录类

class Login
  include PageObject

  page_url 'http://localhost:9090/#/login'

  button(:login, :id => 'login-btn')
end

我想检查按钮是否启用。通常情况下,我会在 Watir 中使用类似的名称来调用它

@browser.button(:id => 'login-btn').enabled?

当我尝试使用登录 PageObject 别名时,出现错误。

on(Login).login.enabled?
> NoMethodError: undefined method 'enabled?' for nil:NilClass

是否有一种 PageObject 风格的方式来访问 Watir 属性(例如启用),还是我需要通过 @browser 变量手动查找元素并以这种方式进行检查?这似乎违背了使用 PageObject 的初衷。

【问题讨论】:

  • 'test-factory' gem 允许你在上面做的事情,因为它围绕 watir 进行了更优化,而不是试图同时支持 Watir 和 Selenium 用户。如果您刚刚开始,您可能希望将其评估为 page-object gem 的替代方案。如果您已经编写了很多代码,那么可能不值得在中途换马

标签: ruby watir watir-webdriver page-object-gem


【解决方案1】:

页面对象访问器方法,例如button,将创建一个返回PageObject::Elements::Element<name>_element 方法。使用此对象,您可以检查元素的各个方面。

对于这种情况,可以通过以下方式检查按钮状态:

on(Login).login_element.enabled?

注意PageObject::Elements::ElementWatir::Element 的包装。这意味着您在 Watir 中使用的方法可能不可用(即未实现)。如果遇到这种情况,可以直接使用element方法访问底层的Watir::Element

on(Login).login_element.element.enabled?

【讨论】:

  • 感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2012-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-11
相关资源
最近更新 更多