calabash / ruby​​ while循环没有结束

时间:2014-08-27 14:37:24

标签: ruby calabash calabash-android

简而言之,我有一个自定义步骤定义来向下滚动搜索结果页面,直到找到文本字符串。

它向下滚动并找到文本字符串

但是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

是我一直在使用的红宝石。

2 个答案:

答案 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秒后没有找到文本滚动,此方法将为您提供屏幕截图并引发错误。你可以修改使用你想要的。 (我只是从您的帖子中获取代码,以便在第一次尝试修改此内容时出现问题)。