2016-08-10 2 views
0

Ich versuche, durch die Android App zu scrollen, um ein bestimmtes Element zu finden. Unten ist der Code für das Scrollen:Scrollen in Android mit Appium + Ruby

def self.swipe_to (programme) 
    begin 
    scroll_to(programme) 
    rescue 
    puts 'unable to find ' + programme 
    return false 
    end 
    return true 
end 

Das Scrollen aber gut funktioniert, ist das Problem ist die App blättert zum Programm, aber sobald das Programm gefunden, an die Spitze der Liste, um die App blättert zurück. Und dann wird ein Fehler ausgelöst, dass das Element nicht gefunden wurde.

Hat jemand schon einmal ähnliche Probleme gesehen? Gibt es eine Möglichkeit, das Scrollen zu stoppen, sobald das Programm gefunden wurde? Ich möchte nur das Zurückscrollen nach oben stoppen, sobald das Programm gefunden wurde. Bitte helfen Sie.

+0

haben Sie die Sichtbarkeit des Elements überprüfen? – juhlila

+0

Anfangs ist das Element nicht sichtbar, deshalb muss ich scrollen. Sobald das Element sichtbar ist, stoppt das Scrollen, aber das Scrollen beginnt automatisch in umgekehrter Reihenfolge und endet oben auf der Seite. An diesem Punkt wird das Element wieder unsichtbar. – Anshul

+0

überprüfen, ob meine Antwort Ihnen helfen wird – juhlila

Antwort

0

Ich habe eine Methode erstellt, um zu einem Element zu scrollen, das noch nicht auf dem Bildschirm ist, weil scroll_to für mich nicht funktionierte. Diese methos scrollt auf jedes Element auf dem Bildschirm, auch wenn seine noch nicht sichtbar

def scroll_to_element(class_name, element_name) 
    ele_by_json(typeArray: [class_name], onlyVisible: false, name: {target: element_name, substring: false, insensitive: false}) 
end 
+0

Ich versuche, Ihre Methode zu verwenden, aber ich bekomme undefinierte Methode 'ele_by_json 'Fehler (NoMethodError). Bitte beachte, ich versuche die Android App zu automatisieren. Ich habe auch versucht "ele_by_json_visible_contains" nach der Suche im Internet, aber kein Glück :( – Anshul

+0

oh 'ele_by_json' ist nur für ios, aber Sie können versuchen, eine andere Methoden hier https://github.com/appium/ruby_lib/blob/master/ lib/appium_lib/android/element/generic.rb – juhlila

+0

Ich habe versucht, genau zu finden und zu finden, aber das Problem ist, dass es nur diejenigen Elemente findet, die gerade auf dem Bildschirm sichtbar sind.Wenn das Element nicht auf dem Bildschirm sichtbar ist, wird NoSuchElementError beobachtet – Anshul

0

Below Code für mich gearbeitet:

def scrollTo el_start, el_end 
    #get element coordinates start 
    el_start = $driver.find_element(:id, el_start) 
    screen_x_start = el_start.location.x 
    screen_y_start = el_start.location.y 
    #get element coordinates end 
    el_end = $driver.find_element(:id, el_end) 
    screen_x_end = el_end.location.x 
    screen_y_end = el_end.location.y 
    Appium::TouchAction.new.swipe(start_x: screen_x_start, start_y: screen_y_start, delta_x: screen_x_end, delta_y: screen_y_end).perform 
end 
Verwandte Themen