0

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

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

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

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

4

2 回答 2

0

你用的是哪个版本的葫芦?我已经编写了类似的步骤定义,它非常适合我(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

两者都是 Calabash Ruby API 的函数element_does_not_exist()scroll_down

相反scroll_down,您可以尝试使用您的函数来滚动指定的 ScrollView。

(编辑:对不起,我没有看评论;))

于 2014-08-28T12:38:38.923 回答
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 秒后没有找到滚动的文本,此方法将为您提供屏幕截图并引发错误。您可以修改以根据需要使用。(我只是从您的帖子中获取代码,所以如果第一次出现问题,请尝试修改它)。

于 2014-08-29T05:00:28.703 回答