2016-08-10 4 views
0

특정 요소를 찾으려면 android app를 스크롤하려고합니다. 아래는 스크롤에 대한 코드는 다음과 같습니다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

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 
관련 문제