2017-03-22 1 views
0

Wie kann ich appium ein Element zu finden, das nicht sichtbar in einer Listenansicht ist (vielleicht das Element ist im Boden befindet, und ich brauche viele Seiten zu blättern, so dass ich das Element finden)Wie kann ich mit appium ein Element finden, das in einer Listenansicht nicht sichtbar ist? .driver.scroll_findElement_byname?

ich verwendet habe, driver.scroll_find_element_by_name(), aber ich habe einen Fehler bekommen.

Appium: info: [Debug] Haben Sie in 60 Sekunden einen neuen Befehl nicht erhalten, herunter ... unten

Mein Code ist wie folgt:

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 

Antwort

0

Für iOS:

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

Ändern 'finden _element_by_xpath 'zu id oder was auch immer du willst.

Für Android:

Ich habe meine eigene benutzerdefinierte Methode geschrieben, die für das Element sieht - wenn es klicken sonst gefunden wird weiter nach unten bewegen. get_element im folgenden Code-Snippet ist eine meiner eigenen benutzerdefinierten Methoden. Sie sollten es in find_elemeny_by_xpath/id usw. ändern. Ändern Sie es nach Ihren Bedürfnissen.

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 

auch Wert von ‚end_y = 950‘ ändern, wie pro Ihre Bildschirmgröße

+0

Sie danken für Sie beantworten! Ich werde es versuchen . –

+0

wenn es funktioniert, werde ich es dir sagen –

Verwandte Themen