2017-07-18 75 views
0

我正在使用与Cucumber和Watir合作的页面对象gem开始我的第一步。我现在的步骤定义文件具有类似如下的命令:页面对象gem - 如何实现wait_until_present

@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' 

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

有点谷歌搜索显示我可以做到这一点。但它使用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与页面对象的?如果可能的话,我不想在我的步骤文件中输入很多睡眠。

回答

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

+0

谢谢贾斯汀,我今天早上在车上听着一个有你身份的Watir播客。我正在使用最新的Watir 6.我将开始相信Watir,并拿出一些wait_until_present,看看我有多相处。 – albatross