我刚认识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?

当我尝试使用登录页面对象别名时,会得到一个错误。
on(Login).login.enabled?
> NoMethodError: undefined method 'enabled?' for nil:NilClass

是否有一种pageobject风格的方法来访问watir属性,比如enabled,或者我需要通过@browser变量手动查找元素并进行检查?这似乎违背了最初使用pageobject的目的。

最佳答案

页面对象访问器方法,例如button,将创建返回<name>_elementPageObject::Elements::Element方法。使用此对象,可以检查元素的各个方面。
在这种情况下,可以使用以下命令检查按钮状态:

on(Login).login_element.enabled?

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

关于ruby - 如何访问PageObject元素的Watir属性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36894800/

10-15 09:50