2016-03-22 8 views
-1

Appium Verwendung, UIAutomatoViewer und Android 5.1Kann nicht XPath auf Android finden

Können Sie mir bitte helfen XPath des Elements zu finden. Ich brauche Text von DVR Boxen (Wohnzimmer, DVR 1 in diesem Beispiel). Ich habe verschiedene Kombinationen ausprobiert, aber immer noch kein Glück.

Ich kann resource-id nicht verwenden, weil für RelativeLayout[0] und RelativeLayout[1] sie die gleichen sind. Und ich kann die Seite auch nicht mit Text durchsuchen, weil Text dynamisch ist (DVR-Boxen ändern sich). Ich denke einzige Lösung ist, XPath

Hier finden Sie, was ich tat:

  1. AndroidElement d = (AndroidElement) 
    driver.findElementByXPath("//android.widget.RelativeLayout[0]/android.widget.RelativeLayout[0]/android.widget.TextView[0]");      
    
  2. AndroidElement d = (AndroidElement) 
    driver.findElementByXPath("//android.widget.RelativeLayout[@index='0']"); 
    System.out.println(d.getText());    
    
  3. AndroidElement d = (AndroidElement) 
    driver.findElementByXPath("//RelativeLayout[0]/TextView[0]"); 
    

Aber nicht meiner Lösungen bisher arbeiten

enter image description here

+0

versuchen Sie den XPath wie im Appium Inspector für das Element in den Eigenschaften angezeigt – nullpointer

+0

Vielen Dank. Ich war mit UIAtomatorviewer und wusste nicht, dass in Appium Inspector Sie Full Xpath sehen können. UIAtomatorviewer hat diese Option bisher nicht –

Antwort

0

kann ich nicht verwenden "Ressource-id", weil für RelativeLayout [0] und RelativeLayout1 sie gleich

Sie noch resource-ids eine List<WebElement> Erstellung und den Zugriff auf Elemente mit Index verwenden können. In Ihrem Fall etwas wie folgt aus:

List<WebElement> dvrList = driver.findElementsById("<id of the list element"); //creates a list of elements with same id 
String text = dvrList.get(1).getText(); //this gives you text of 2nd element on list (base index 0) 

denke ich nur Lösung XPath

ist Sofern der Xpath korrekt ist Ihr Weg, um das Element der Zugriff in Ordnung

WebElement dvrItem = driver.findElementByXPath("//android.widget.ListView[0]/android.widget.RelativeLayout[0]/android.widget.RelativeLayout[0]/android.widget.TextView[0]"); 
String text = dvrItem.getText(); 

Bearbeiten scheint : -

Correct XPath = //android.widget.RelativeLayout[1]/android.widget.R‌​elativeLayout[1]/android.widget.TextView[1] 
+0

Korrekten Xpath gefunden: WebElement drv = driver.findElement (By.xpath ("// android.widget.RelativeLayout [1] /android.widget.RelativeLayout [1] /android.widget.TextView [1] ")); drv.getText(); –

+0

hoffe, dass appium inspector hilft :) – nullpointer