我和下面的帖子有完全相同的问题,除了我需要它适用于Android,以下帖子适用于iOS。我已尝试过该帖子中给出的两种解决方案,但它们似乎不适用于Android。感谢所有帮助!
How do i scroll a UITable view down until i see a cell with label "Value" in Calabash
答案 0 :(得分: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
它适用于我,我希望它对你也一样!
答案 1 :(得分:1)
performAction('scroll_down')
在语句中,不推荐使用performAction(),因为calabash 0.5因此对最新版本无效
我的解决方案是,
def scroll_until_I_see(id)
until element_exists("* marked:'#{id}'") do
scroll("ScrollView", :down)
end
end
答案 2 :(得分: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
}
答案 3 :(得分: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
答案 4 :(得分:0)
我有一个嵌套视图,因此向下滚动scroll_down函数无论如何都将返回“无滚动视图”。 所以基于你们所讨论的内容,我发现这个有用了:
scroll("android.support.v4.widget.NestedScrollView",:down)
它向下滚动,但只滚动一次。