简而言之,我有一个自定义步骤定义来向下滚动搜索结果页面,直到找到文本字符串。
它向下滚动并找到文本字符串
但是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
是我一直在使用的红宝石。
答案 0 :(得分:0)
你使用哪种版本的Calabash? 我编写了类似的步骤定义,它对我来说非常有效(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
都是Calabash Ruby API的功能。
而是scroll_down
您可以尝试使用您的函数滚动指定的ScrollView。
(编辑:对不起,我没看过评论;))
答案 1 :(得分:0)
试试这个...
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秒后没有找到文本滚动,此方法将为您提供屏幕截图并引发错误。你可以修改使用你想要的。 (我只是从您的帖子中获取代码,以便在第一次尝试修改此内容时出现问题)。