2016-04-08 11 views
5

Ho un UITableView che contiene circa 50 elementi. In qualsiasi momento solo 6 di essi sono visibili sullo schermo. Voglio selezionare una cella che non viene aggiunta alla vista tabella o dire che devo selezionare il 25 ° elemento dall'elenco dei dati.Automatizza IOS UITableview utilizzando l'appio

Ora sto usando questo metodo per clic su una cella a Tableview

wait.until(ExpectedConditions.visibilityOf(driver.findElementByAccessibilityId(element))).click(); 

Ma non il suo lavoro come l'elemento 25 non è ancora aggiunto alla vista. Si noti che sto aggiungendo l'identificatore di accessibilità per la cella di visualizzazione tabella dinamicamente all'interno del codice.

Come posso fare questo lavoro?

***** aggiunti ulteriori dettagli ******

ho la cella di vista tabella che visualizza due viste di testo. Nome breve della valuta e nome lungo della valuta.

Si consideri l'esempio

GBP

Gran Bretagna Pounds

Ora l'Identifier accessibilità per quella cella Tableview è impostato come GBP. Ora ho provato

driver.scrollTo ("GBP") e ("driver.scrollTo Pounds Gran Bretagna")

Entrambi lavorano poco. Ricevo un messaggio di errore

A element could not be located on the page using the Search parameter 

Grazie.

+1

Conosci il testo dell'elemento? perché driver.scrollTo ("Testo") funziona come un fascino in iOS. –

+0

Hai provato X-Path? L'indice in x-path dovrebbe aiutarti ad accedere all'elemento durante lo scorrimento. – nullpointer

+0

Penso che dovresti visualizzare la cella prima di selezionarla. Potrebbe essere necessario scorrere fino alla cella di destinazione (con un metodo di visualizzazione tabella), e dopo di ciò provare a selezionarlo. Per trovare l'indice delle celle è possibile determinarne il modello nell'array dei modelli. Era necessario perché TableView riutilizza le celle e modifichi AccessibilityId in runtime per tutte le celle di tableView –

risposta

1
String ReqN = "Your required string"; 
    boolean flag = true; 
    while (flag) { 
     for (i=1;i<=6;i++) { 
      String GetN = driver.findElement(By.xpath("//android.widget.HorizontalScrollView/android.widget.LinearLayout[" + i + "]")).getText(); 
      if (GetN.equals(ReqN)) { 
       flag = false; 
       System.out.println("Your result found"); 
      } 
     } 
     if (flag) { 
      driver.swipe(145, 765, 145, 180, 3000); 
     } 
    } 

String ReqN :: La stringa predefinita

String GetN :: Testo ottenere per ogni elemento [1 a 6, che si ottiene dal ciclo for]

Quindi ottenere il testo & partita per prima sei elementi se il testo predefinito non viene trovato, quindi passa da un dato asse [che è il 6 ° elemento al 1 ° elemento] ... così otterrai il nuovo ciclo & di sei elementi che verrà eseguito di nuovo.

rif. Image Elements & X,Y points

Problemi correlati