2016-03-31 15 views
0

Ich möchte zu einem bestimmten Element blättern, das momentan nicht auf dem Bildschirm sichtbar ist, aber es ist irgendwo auf der Seite, wo ich runterscrollen muss. So funktioniert dr.scrollTo() nicht und ich habe versucht jsExecutor.executeScript("mobile: scroll", scrollObject), die auch nicht funktioniert. Also irgendwelche Ideen dafür?Appium [iOS Native App] - Wie scrollt man mit Java zu einem bestimmten Element/Objekt?

Wenn möglich möchte ich es generisch, so dass es sowohl nach oben als auch nach unten suchen kann, wo die Objektposition unsicher ist.

Antwort

0

Die Lösung eine Arbeit um ist. Es gibt keine genaue Funktion dafür. Zuerst sammeln wir die Anforderungen - Scroll-Seite (mit Bereich von - [aktuelle Seite Ort, Seite Ende]), bis das Element sichtbar ist.

zum Scrollen wir

driver.swipe(startx, starty, startx, endy, 1000); 

für die Suche nach Element Sichtbarkeit bedienen-können wir Code wie-

try { 
      dr.findElement(By.xpath(xpath); // find element with whatever Selector, I am using xpath 
      if (dr.findElementsByXPath(xpath).size()>0 && dr.findElement(By.xpath(xpath)).isDisplayed()){ 
       System.out.println("Element found by xpath : " + xpath); 
       return true; 
      } else 
       return false; 
     } catch (NoSuchElementException e1) { 
      System.out.println("Object not found"); 
      return false; 
     } catch (Exception e2) { 
      System.out.println("Unhandled Exception found"); 
      e2.printStackTrace(); 
      throw e2; 
     } 

Jetzt haben wir eine Bedingung setzen können, sollte das Scrollen stoppen, wenn letzte Element ist sichtbar. Dafür können wir den XPath des aktuellen Elements ändern, und überprüfen Sie die Sichtbarkeit des Elements von diesem XPath gefunden, wie-

String xpath_last = elementxpath.concat("/../*[last()]"); // if we are scrolling downwards then [last()]. But if we are scrolling up then make it [1] 

Damit ist Ihr Zustand. Ich denke, das sollte es tun!