如何访问 PageObject 元素的 Watir 属性?

How do I access Watir properties of PageObject elements?

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

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 的初衷。

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

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

on(Login).login_element.enabled?

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

on(Login).login_element.element.enabled?