2016-06-15 14 views
2

Ich bin neu in Appium.So finden Sie Element in Appium

Ich lerne Appium mit Automatisierung der Shopping-App (Flipkart).

Ich versuche Element fünftes Element von „Empfohlene Rabatt für Sie“ Liste auszuwählen.

Um dies zu tun, muss ich horizontal scrollen, um dieses Element zu erreichen. Aber ich habe ein Problem bekommen, dass Containerelement, in dem Elemente von "Empfohlener Rabatt für Sie" vorhanden ist, so kann ich die 5th element holen.

Ich denke, das Problem ist UI von flipkart immer Änderung bekommen.

driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); 
    Thread.sleep(3000); 
    driver.scrollToExact("Recommended Offers for You"); 
    Thread.sleep(10000); 
    // Getting error on below line 
    AndroidElement ele = (AndroidElement) driver.findElement(By.xpath("//android.support.v7.widget.RecyclerView[@index='1']")); 

    for(int i=0;i<4;i++) 
    { 
    Thread.sleep(2000); 
    if (ele.findElement(By.xpath("android.widget.RelativeLayout[@index='2']")).isDisplayed()) 
    { 
     ele.findElement(By.xpath("android.widget.RelativeLayout[@index='2']")).click(); 
     break; 
    } 
    else 
    { 
     horizontalScroll(ele); 
    } 

    } 

public void horizontalScroll(AndroidElement ele) 
{ 
    Dimension size=driver.manage().window().getSize(); 
    int x_start=(int)(size.width*0.60); 
    int x_end=(int)(size.width*0.30); 
    int y=130; 
    ele.swipe(SwipeElementDirection.RIGHT,x_end,y,4000); 
} 

I uiautomator zu find elements verwenden. Hier ist der Screenshot von UI.

enter image description here

Ich habe folgende Fragen:

  1. Was beste Weg ist, Elemente zu finden, wenn UI von App als angezeigt wird.
  2. Welche App soll ich automatisieren, um Appium zu lernen?
  3. Wie App automatisieren, wenn UI von App immer ändern

Hilfe Bitte bekommen ist! Danke im Voraus.

Antwort

1

Hier sehe ich das Element hat eine Ressource-ID. Warum nicht das benutzen?

  1. Was ist der beste Weg, um Elemente zu finden, wenn UI der App wie angezeigt wird. Es ist immer eine bevorzugte Methode, Elemente nach Ressourcen-ID zu suchen. Weil es das Element schneller findet als xpath. Wenn ein Element dazwischen hinzugefügt wird, variiert der xpath außerdem, weil sich das Element in der Hierarchie ändert.

  2. Welche App soll ich automatisieren, um Appium zu lernen? Jede native App, um mit der Verwendung von Appium zu beginnen, stellte UICatalog für iOS und Apps von Playstore für Android zur Verfügung.

  3. Wie App zu automatisieren, wenn UI von App immer Änderung Skalierbare Lösung bekommt UI App zu automatisieren beinhaltet Seite Objekte Erstellung, Pflege Locators an einem Ort und nicht durch aus den Testfällen usw. von der Größe abhängt ausgebreitet der Veränderung, ist es die Navigation, die sich geändert hat, die Elementhierarchie, die sich geändert hat usw. Die Ressourcen-ID-basierte Auswahl wird immer bevorzugt, was die Änderung des Automatisierungsskripts reduziert, wenn es eine Layoutänderung in der App gibt. Aber ich fürchte, es gibt keine einzige Methode, um dieses Problem anzugehen.

+0

Was passiert, wenn mehrere Ressourcen dieselbe Ressource-ID haben? Weil ich sehe, dass mehrere Ressourcen dieselbe Ressource haben – Ankur

+0

In einer RecyclerView werden Elemente sehr häufig die gleichen resourceIds haben, da sie die gleiche Ansicht sind. Es sei denn, Sie verwenden eindeutige Elemente, um den RecyclerView zu füllen, was gegen die Absicht des RecyclerViews verstoßen würde. – Daniel

2
  1. Beste (oder besser gesagt der schnellste) Weg, um ein Element in der App zu finden, wird mit der Ressource-ID. Wenn die Ressource-ID nicht verfügbar ist/same Sie haben es zu finden mit XPath

  2. Wenn Sie Appium lernen wollen Sie hier, indem Sie folgende Tutorials von Mukesh Otwani beginnen kann, ist die link

  3. Wenn die UI die einzige Art und Weise zu aktualisieren aktualisiert, aktualisieren Sie Ihr Skript mit den Änderungen.

Hoffe es hilft!

+0

Was ist, wenn mehrere Ressourcen dieselbe Ressource-ID haben? Weil ich sehe, dass mehrere Ressourcen dieselbe Ressource-ID haben – Ankur

0

In Android, wenn die Ansicht irgendeine Art von Listenansicht ist, haben alle Elemente dieselbe ID, so dass Sie in diesem Fall den Namen verwenden können, um darauf zu tippen, oder Sie XPaths erstellen und verwenden Sie Ihre Aktionen

0

Wenn Sie mehrere UI-Elemente mit derselben Ressourcen-ID haben, können Sie den Index zusammen mit der Ressourcen-ID verwenden.

WebElement element=driver.findElements(By.id("your_id")).get(1);