2016-08-10 90 views
0

我正在嘗試通過Android應用程序滾動以查找特定元素。下面是滾動碼:但是使用Appium + Ruby在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不適合我。這methos滾動到任何元素在屏幕上,即使它尚不可見

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

我正在嘗試使用您的方法,但我收到未定義的方法'ele_by_json'錯誤(NoMethodError)。請注意,我試圖自動化Android應用程序。在互聯網上搜索後,我也嘗試過「ele_by_json_visible_contains」,但沒有運氣:( – Anshul

+0

''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 
相關問題