我正在使用红宝石中的Cucumber-Appium进行android app测试自动化。
我想写一个等待函数,它应该等到显示下一页。
我尝试了几种方法,但它没有用。
代码:
And (/^I wait till '(.*)' appears$/) do |next_page|
$i=1
while $i==1 do
if ObjectSpace.const_get('next_page').new.identity?
$current_page = $current_page.change_page('next_page')
$i=0
else
wait_secs(1)
end
end
任何人都可以提出建议吗?
答案 0 :(得分:0)
每当我写一个超时方法时,我都希望通过该块直到它超时或解析为true。基本上,我希望它看起来像这样:
timer { ObjectSpace.const_get('NextPage').new.identity? }
所以我的方法如下:
def timer(t = 5, &block)
timeout = Time.now + t
until Time.now > timeout
result = yield
return result if result
sleep 0.5
end
raise "Timer failed after #{t} seconds"
end
此方法循环遍历我的块,直到yield
返回真值。它将休眠半秒并在t
秒后超时,默认为5.如果您希望它返回false
而不是引发错误,您只需将最后一行更改为{ {1}}。
我不熟悉appium来编写块来检查你的下一页,但我想它看起来与我上面的第一个代码示例类似。