calabash/ruby while循环未结束



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

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

但是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秒后没有找到滚动的文本,就会出现错误。您可以根据需要进行修改以使用。(我刚从你的帖子中得到代码,所以如果第一时间出现问题,请尝试修改它)。

相关内容

  • 没有找到相关文章

最新更新