页面对象 gem - 如何实现 wait_until_present

Page-object gem - how to implement wait_until_present

我正在迈出使用页面对象 gem 与 Cucumber 和 Watir 合作的第一步。我当前的步骤定义文件包含如下命令:

@browser.text_field(:name => 'Username').wait_until_present.set username

使用页面对象,我正在使用以下代码测试 watir(抱歉):

class HomePage
  include PageObject
  text_field(:user_name, name: 'username').wait_until_present
}
end

home_page = HomePage.new
home_page.user_name = 'Mickey'

这不起作用,因为我得到 'no method error'

谷歌搜索显示我可以做到这一点。但它使用 when_visible 而不是 wait_until_present

class HomePage
  include PageObject
  text_field(:user_name){
      text_field_element(:name => 'username').when_visible
}
end

home_page = HomePage.new
home_page.user_name = 'Mickey'

将 wait_until 或 when_visible 与页面对象一起使用有什么好处?如果可能的话,我不想在我的步骤文件中放置太多睡眠。

假设您使用的是最新版本的 Watir,您可以简单地执行以下操作:

class HomePage
  include PageObject
  text_field(:user_name, name: 'username')
end

home_page = HomePage.new
home_page.user_name = 'Mickey'

换句话说,您不需要在设置之前显式等待文本字段出现。

Watir 进行了多项改进,包括在设置元素之前自动等待元素出现。因此,您应该很少(从不?)需要调用 wait_until_present.