简而言之,我有一个自定义的步骤定义,可以向下滚动搜索结果页面,直到找到文本字符串。
它向下滚动并找到文本字符串
但是while循环并没有结束,尽管它正确地向下滚动并在找到文本字符串时停止。
这显然给我带来了无尽的伤害。
Then /^I scroll until I see the "This is a test" text$/ do
q = query("android.widget.TextView text:'This is a test'")
while q.empty?
scroll("android.view.View id:'search_listView'", :down)
q = query("android.widget.TextView text:'This is a test'")
end
end
是我一直在用的红宝石。
您使用哪种版本的葫芦?我已经写了类似的步骤定义,它非常适合我(Calabash 0.5.1,Ruby 2.1.2)
这是代码(我认为它更通用和简单):
Then /^I scroll down until I see '(.*?)' text$/ do |text|
while element_does_not_exist("TextView marked:'#{text}'")
scroll_down
end
end
element_does_not_exist()
和scroll_down
都是CalabashRuby API的函数。
代替scroll_down
,您可以尝试使用您的功能滚动指定的ScrollView。
(编辑:对不起,我没有看评论;)
试试这个。。。
def scroll_to_text(text)
element = "android.widget.TextView text:'#{text}'"
if !element_exists(element)
wait_poll(:until_exists => element, :timeout => 60, :screenshot_on_error => true) do
scroll("android.view.View id:'search_listView'", :down)
end
end
end
这个方法会给你一个屏幕截图,如果在60秒后没有找到滚动的文本,就会出现错误。您可以根据需要进行修改以使用。(我刚从你的帖子中得到代码,所以如果第一时间出现问题,请尝试修改它)。