2016-08-10 2 views
0

Я пытаюсь прокрутить приложение Android, чтобы найти определенный элемент. Ниже приведен код для прокрутки: однакоПрокрутка в android с помощью Appium + Ruby

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

Скроллинг работает нормально, проблема заключается в приложение прокручивается к программе, но как только программа найдена, приложение прокручивается обратно в верхней части списка. И тут возникает ошибка, говорящая, что элемент не найден.

Кто-нибудь видел подобный вопрос раньше? Есть ли способ остановить прокрутку, как только программа будет найдена? Я просто хочу остановить прокрутку вверх, как только программа будет найдена. Пожалуйста помоги.

+0

вы проверить видимость элемента? – juhlila

+0

Первоначально элемент не отображается, поэтому мне нужно прокручивать. Когда элемент виден, прокрутка останавливается, но затем прокрутка начинается автоматически в обратном порядке и останавливается в верхней части страницы. В этот момент элемент снова становится невидимым. – Anshul

+0

проверить, если мой ответ поможет вам – juhlila

ответ

0

Я создал способ прокрутки до элемента, который еще не на экране, потому что scroll_to не работал для меня. Это Митос прокручивается к любому элементу на экране, даже если его не видно

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

Я пытаюсь использовать ваш метод, но я получаю undefined метод 'ele_by_json 'error (NoMethodError). Обратите внимание, что я пытаюсь автоматизировать приложение для Android. Я также попытался «ele_by_json_visible_contains» после поиска в Интернете, но не повезло :( – Anshul

+0

oh 'ele_by_json' предназначен только для ios, но вы можете попробовать другие методы, перечисленные здесь https://github.com/appium/ruby_lib/blob/master/ lib/appium_lib/android/element/generic.rb – juhlila

+0

Я попытался найти и найти точное, но проблема в том, что он находит только те элементы, которые в настоящее время видны на экране. Если элемент не отображается на экране, то наблюдается NoSuchElementError – Anshul

0

Ниже код работает для меня:

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 
Смежные вопросы