2013-05-14 5 views
6

sehe Ich habe exakt die gleiche Frage wie der Post unten, außer dass ich es für Android arbeiten muss und der Post unten ist für iOS. Ich habe beide Lösungen in diesem Beitrag versucht, aber sie scheinen nicht für Android zu funktionieren. Alle Hilfe wird geschätzt!Wie scrolle ich eine ListView, bis ich eine bestimmte Zeichenfolge mit Calabash-Android

How do i scroll a UITable view down until i see a cell with label "Value" in Calabash

+0

http://stackoverflow.com/questions/31120310/calabash-android-looping-through-a-listview-to-check/32471752#32471752 ich diese Frage hier :) –

Antwort

11

Sie können diese neue Schrittdefinition hinzufügen und es sollte den Trick für Android tun:

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 

Es funktioniert für mich und ich hoffe, dass es das gleiche für Sie tut!

+1

Hallo Proghero beantwortet haben. performAction ist seit Calabash 0.5 veraltet. Hast du zufällig ein Snippet, das für die neueste Calabash-Version funktioniert? –

+1

Ändern Sie einfach ** performAction ('scroll_down') ** zu: ** scroll_down ** –

+1

Es sollte eine Zeitüberschreitung bei dieser Methode auftreten, da sie unbegrenzt ausgeführt werden kann. – Tobias

1

performAction('scroll_down')

In der Erklärung perform() seit Kalebasse 0,5 so nicht gültig mit der neuesten Version ist veraltet

wird Meine Lösung, sein

def scroll_until_I_see(id) 
    until element_exists("* marked:'#{id}'") do 
    scroll("ScrollView", :down) 
    end 
end 
+0

Narandra @ Diese Lösung hat für mich funktioniert. Ich habe auch die Syntax zum besseren Verständnis hervorgehoben ... – Aravin

+1

Das ist großartig @Aravin. Ich denke, Sie haben meine Lösung als "Diese Antwort ist nützlich" markiert? – NarendraC

+0

Ja. Das hat mein Problem gelöst. – Aravin

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 
    } 
0

Hier Methode ist Es scrollt Bildschirm und Rückgabeelement oder leeres Array, wenn Element nicht gefunden wird.

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 
0

Ich habe eine verschachtelte Ansicht, so dass Scrollen nach unten mit Scroll_down-Funktion sowieso "keine Bildlaufansicht" zurückgibt. So basiert auf, was Sie alles besprochen ich dieses Arbeits finden:

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

und scrollt nach unten, aber scrollt nur einmal.