2017-03-22 3 views
0

어떻게 (아마도 요소가 하단에 위치하고 있으며, 내가 요소를 찾을 수 있도록 많은 페이지를 스크롤 할 필요가있다)appium을 사용하여 목록보기 .driver.scroll_findElement_byname에서 눈에 보이지 않는 요소를 찾으려면 어떻게해야합니까?

내가 사용한리스트 뷰에 표시되지 않는 요소를 찾기 위해 appium을 사용할 수 있습니다 driver.scroll_find_element_by_name(),하지만 오류가 발생했습니다.

Appium : 정보를 다음과 같이 [디버그]

내 코드는 ... 아래 을 종료, 60 초에 새 명령을하지 않았다 :

def scroll_find_element_by_name(self, element_name, time_wait=0.5): 
    ''' 
    @param: 
    @rtn: True/False, 
    @usage: 
    ''' 
    # 
    width,height=self.getScreenResolution() 
    for i in range(maxScrollTimes): 
     # 
     try: 
      self.assertRaises(NoSuchElementException, self.driver.find_element_by_name, element_name) 
      print "Scroll down " + str(i+1) + ' time to find ' + element_name 
     except: 
      print 'SUCCESS: ' + element_name + ' found' 
      return True 

     self.driver.swipe(width/2, 5 * height/8, width/2, 3 * height/8, 1500)# 
     sleep(time_wait) 
    print 'UNSUCCESS: ' + element_name + 'NOT found' 
    return False 

답변

0

iOS의 경우 :

el = self.driver.find_element_by_xpath('xpath_value') 
self.driver.execute_script('mobile: scroll', {"element": el, "toVisible": True}) 

수정 '찾기 _element_by_xpath '를 ID 또는 원하는대로 지정하십시오. 안드로이드에 대한

: 나는 요소를 찾습니다 내 자신 만의 방법을 쓴

- 그것은 다른 클릭 더 아래로 이동합니다 발견하는 경우입니다. 아래의 코드 스 니펫에있는 get_element는 내 자신의 맞춤 메소드 중 하나입니다. find_elemeny_by_xpath/id 등으로 변경해야합니다. 필요에 맞게 수정하십시오.

def android_is_visible(self, locator): 
    for _ in xrange(15): 
     end_y = 950 
     try: 
      value = self.get_element(locator).is_displayed() 
      if value is True: 
       break 
     except NoSuchElementException: 
      self.driver.swipe(470, 1400, 470, end_y, 400) 
      #self.driver.swipe(start_x, start_y, end_x, end_y, duration=400) 
      self.driver.implicitly_wait(2) 
      continue 

은 또한, 응답에 대한

+0

이 감사 화면 크기에 따라 'end_y = 950'의 값을 변경! 나는 그것을 시도 할 것이다. –

+0

작동하면 알려 드리겠습니다. –