6

我的问题与下面的帖子完全相同,除了我需要它适用于 Android 并且下面的帖子适用于 iOS。我已经尝试了该帖子中给出的两种解决方案,但它们似乎不适用于 Android。感谢所有帮助!

如何向下滚动 UITable 视图,直到在 Calabash 中看到带有标签“Value”的单元格

4

5 回答 5

11

您可以添加这个新的步骤定义,它应该可以为 Android 解决问题:

Then /^I scroll until I see the "([^\"]*)" text$/ do |text|
  q = query("TextView text:'#{text}'")
  while q.empty?
    scroll_down
    q = query("TextView text:'#{text}'")
  end 
end

它对我有用,我希望它对你也一样!

于 2013-05-19T08:34:00.537 回答
1

performAction('scroll_down')

在声明中, performAction() 自葫芦 0.5 起已弃用,因此在最新版本中无效

我的解决方案是,

def scroll_until_I_see(id)
  until element_exists("* marked:'#{id}'") do
    scroll("ScrollView", :down)
  end
end
于 2015-03-10T19:37:31.267 回答
1
   #get total row count    
    count=query("ListView",:getCount).first.to_i
    var=0
    count.times {
        query("ListView",{:smoothScrollToPosition=>var})
        var+=1
        puts "#{count} #{var}"
        #break if id found  
        break if element_exists("* marked:'#{id}'")
        #fail if all rows are checked
        fail("#{id} is missing") if var==count
    }
于 2015-12-08T14:57:44.707 回答
0

这是方法,如果找不到元素,它将滚动屏幕并返回元素或空数组。

def find_if_exist(text)
  query_result = query("* marked:'#{text}'")
  current_screen_state = query('*')
  prev_screen_state = []

  while (query_result.empty? and (current_screen_state != prev_screen_state))
     prev_screen_state = current_screen_state
     perform_action('drag', 50, 50, 60, 40, 20)
     current_screen_state = query('*')
     query_result = query("* marked:'#{text}'")
  end
  query_result
end
于 2016-03-30T06:18:28.157 回答
0

我有一个嵌套视图,因此使用 scroll_down 函数向下滚动无论如何都会返回“无滚动视图”。因此,根据大家讨论的内容,我发现这个可行:

scroll("android.support.v4.widget.NestedScrollView",:down)

它向下滚动,但只滚动一次。

于 2016-10-18T18:30:18.540 回答