2017-10-16 19 views
0

J'ai une liste d'éléments dans une vue de défilement dans android. J'ai besoin d'ajouter tous les noms d'éléments dans une ArrayList. J'ai essayé plusieurs façons de faire défiler et aucun d'entre eux ne remplit mon exigence. Aidez-moi s'il vous plaît à réaliser ceci.Comment ajouter des noms d'éléments Web dans android défiler dans une ArrayList utilisant Java Appium?

C'est le nom de la classe de la liste des éléments: android.support.v7.widget.RecyclerView C'est l'identifiant de chaque élément: com.testapp.poker:id/recyclerViewCards

List <String> elementNameList = new ArrayList(); 

    public void getWebElementsNameList(String classNameOfElementList, String elementId){ 
      System.out.println("Items found:"); 
      Gauge.writeMessage("Items found:"); 
      int i = 1; 
      for(WebElement element : getWebElements(classNameOfElementList, elementId)) { 
       System.out.println(i + ") " + element.getText()); 
       Gauge.writeMessage(i + ") " + element.getText()); 
       elementNameList.add(element.getText()); 
       i++; 
      } 
     } 

Le code ci-dessus saisit uniquement les éléments qui sont visibles sur la vue actuelle. J'ai besoin d'aide pour modifier cela avec la logique de défilement.

+0

Avez-vous besoin vraiment tous les éléments pour être dans la liste ou vous cherchez à faire autre chose? Peut-être cliquez sur l'un d'eux? –

Répondre

1

Ceci est un comportement attendu. UIAutomator peut renvoyer les éléments qui sont visibles. Contrairement au sélénium, appium (UiAutomator) ne peut pas voir les éléments qui ne sont pas visibles sur l'écran.

La solution à votre problème est: Obtenez les éléments visibles et ajoutez-les à arraylist, puis faites défiler vers les éléments suivants et ajoutez à l'arraylist et ainsi de suite jusqu'à ce que la liste se termine.

0

Vous pouvez essayer quelque chose comme ça

List <String> elementNameList = new ArrayList(); 

public void getWebElementsNameList(String classNameOfElementList, String elementId){ 
    nameStart = ""; 
    System.out.println("Items found:"); 
    Gauge.writeMessage("Items found:"); 
    int i = 1; 
    while(true){  
     for(WebElement element : getWebElements(classNameOfElementList, elementId)) { 
      System.out.println(i + ") " + element.getText()); 
      Gauge.writeMessage(i + ") " + element.getText()); 
      elementNameList.add(element.getText()); 
      i++; 
     } 
     if (!keepSwipping()) { 
     break; 
     } 
    } 
} 

private static String nameStart = ""; 

private boolean keepSwipping() { 
    if (isElementPresent(By.xpath(FIRST_ELEMENT_XPATH)) && isElementPresent(By.xpath(LAST_ELEMENT_XPATH))) { 
     AndroidElement firstElement = (AndroidElement) driver.findElementByXPath(FIRST_ELEMENT_XPATH); 
     AndroidElement lastElement= (AndroidElement) driver.findElementByXPath(LAST_ELEMENT_XPATH); 
     if (nameStart.equals(firstElement.getText())) { 
      return false; 
     } else { 
      nameStart = firstElement.getText(); 
      swipe(lastElement.getLocation().x, lastElement.getLocation().y, firstElement.getLocation().x, 
        firstElement.getLocation().y, 2000); 
     } 
     return true; 
    } 
    return false; 
}