Page-object gem - 如何实现wait_until_present

时间:2017-07-18 10:50:16

标签: ruby cucumber watir page-object-gem

我正在使用与Cucumber和Watir一起使用的页面对象gem的第一步。我现在的步骤定义文件包含如下命令:

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

使用page-object我正在使用以下代码测试watir(对不起):

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

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

这不起作用,因为我得到'没有方法错误'

一些谷歌搜索显示我可以做到这一点。但它使用的是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有什么好处?如果可能的话,我不想在我的步骤文件中大量睡眠。

1 个答案:

答案 0 :(得分:2)

假设您使用的是最新版本的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