2013-05-14 9 views
6

Ho esattamente la stessa domanda del post qui sotto, tranne che ho bisogno che funzioni per Android e il post che segue è per iOS. Ho provato entrambe le soluzioni fornite in quel post, ma non sembrano funzionare per Android. Tutto l'aiuto è apprezzato!Come scorrere un ListView fino a quando vedo una stringa specifica con 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 ho risposto a questa domanda qui :) –

risposta

11

è possibile aggiungere questa nuova definizione passo e dovrebbe fare il trucco per 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 

Funziona per me e spero lo fa lo stesso per voi!

+1

Hi Proghero. performAction è deprecato da calabash 0.5. Ti capita di avere uno snippet che funzioni per l'ultima versione di calabash? –

+1

Basta cambiare ** performAction ('scroll_down') ** a: ** scroll_down ** –

+1

Dovrebbe esserci un timeout attorno a questo metodo poiché potrebbe essere eseguito indefinitamente. – Tobias

1

performAction('scroll_down')

Nella dichiarazione, performAction() è sconsigliata dal calabash 0.5 quindi non valida con l'ultima versione

La mia soluzione sarà,

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

Narandra @ Questa soluzione ha funzionato per me. Ho anche evidenziato la sintassi per una migliore comprensione ... – Aravin

+1

Questo è ottimo @Aravin. Immagino, hai contrassegnato la mia soluzione come "Questa risposta è utile"? – NarendraC

+0

Sì. questo ha risolto il mio problema. – 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

Ecco metodo , scorrerà la schermata e restituirà l'elemento o l'array vuoto se l'elemento non viene trovato.

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

Ho una vista nidificata in modo che lo scorrimento verso il basso con la funzione scroll_down restituirà comunque "nessuna vista di scorrimento". Quindi, sulla base quello che tutti voi discusso Trovo che questo sia un lavoro:

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

e scorre verso il basso, ma Scorre una sola volta.

Problemi correlati