Come scrivere il codice di test Appium: la tua guida completa 2020

Discuteremo come scrivere  Appium test script in questo tutorial. Possiamo testare le nostre applicazioni su simulatore e dispositivi reali. Appium supporta sia le piattaforme Android che iOS.

Argomenti trattati :

Come trovare il pacchetto dell'app e l'attività in Android

Per eseguire il tuo Script di test di Appium in Android dispositivi, dobbiamo passare il pacchetto dell'app e l'attività dell'app in base alle capacità desiderate. Esistono un paio di modi per ottenere l'attività dell'app e il pacchetto dell'app. Ne discuteremo qui. Per questo esempio, sceglieremo l'app di contatto. Segui i passaggi seguenti per ottenere l'attività e il pacchetto dell'app.

Per Windows

finestra adb shell dumpsys | trova -E mCurrentFocus

Per Mac / Linux

finestra adb shell dumpsys | grep mCurrentFocus
Come aggiungere pacchetto / attività dell'app
Come aggiungere pacchetto / attività dell'app

Come creare il tuo primo progetto per i test Appium

Per creare il progetto Appium Testing, abbiamo bisogno di client Maven, TestNG e Appium Java. Ne discuteremo in dettaglio di seguito.

Prerequisito

Come creare un progetto Maven

Per creare un progetto avanzato per i test Appium, fai clic su File e scegli Nuovo–> Progetto.

Creazione di un progetto in IntelliJ
Creare un progetto

Successivamente, seleziona Maven e fai clic su Avanti

Scegli Maven e fai clic su Avanti
Scegli Maven e fai clic su Avanti

Chiederà Groupid e Artifactid. Si prega di fornire lo stesso. Si prega di controllare l'immagine sottostante per riferimento.

ID artefatto maven, ID gruppo
fornire groupId, ID artefatto per Maven

Ora seleziona il nome del progetto e fai clic su Fine.

Nome del progetto
Aggiungi nome progetto
Come aggiungere la dipendenza Maven
Come aggiungere la dipendenza Maven

Dobbiamo aggiungere la dipendenza testNG nel pom.xml per verificare la tua applicazione. Aggiungi sotto le dipendenze nel tuo pom.xml come mostrato nell'immagine sopra.

<dependencies>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>6.8.5</version>
            <scope>test</scope>
        </dependency>
      
        <dependency>
            <groupId>io.appium</groupId>
            <artifactId>java-client</artifactId>
            <version>7.2.0</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

Capacità desiderate Appium testing

Nei test Appium, abbiamo bisogno delle capacità desiderate per interagire con i dispositivi. Capacità desiderate sono parametri inviati come coppia chiave-valore codificata in formato JSON per interagire con i dispositivi Android / iOS. I client Appium inviano queste informazioni al server Appium quando inizia una nuova sessione. Ogni client Appium sviluppa capacità a modo suo. Ma alla fine, tutti i parametri verranno inviati in formato JSON al server. Per maggiori dettagli sulle capacità desiderate, fare clic qui collegamento.

Come aggiungere le funzionalità desiderate per Android

Per interagire con i tuoi dispositivi Android con il tuo server Appium, dobbiamo passare le capacità desiderate specifiche. Aiuterà il server Appium a identificare in modo univoco i dispositivi Android collegati. Di seguito gli elenchi:

1. Devi passare la chiave come "nomepiattaforma"O" MobileCapabilityType.PLATFORM_NAME"E valore come"androide"

2. Devi passare la chiave come "platformVersion" o "MobileCapabilityType.VERSIONE_PIATTAFORMA"E valore come" 23 "[questo valore è la versione api della versione Android]

3. Devi passare la chiave come "nome del dispositivo" o "MobileCapabilityType.NOME DEL DISPOSITIVO"E valore come"Nexus 5X"[Aggiorna il valore con il nome del tuo dispositivo]

4. Devi passare la chiave come "nomeautomazione" o "MobileCapabilityType.AUTOMATION_NAME"E valore come"UIAutomator2"[Devi usare UIAutomator if UIAutomator2 non funziona]

5. Devi passare la chiave come "udid" o "MobileCapabilityType.TU HAI FATTO"E valore come"emulatore-5554"

6. Devi passare la chiave come "pacchetto app"E valore come"contatti.com.android"[Aggiorna i pacchetti dell'app della tua app]

7. Devi passare la chiave come "appActivity"E valore come"com.android.contacts.activities.PeopleActivity"[Aggiorna l'attività dell'app della tua app]

8. Fare riferimento all'immagine sottostante per i dettagli:

Aggiunta delle funzionalità desiderate per Android
Aggiunta delle funzionalità desiderate per Android

Come aggiungere le funzionalità desiderate per iPhone

Per interagire con i tuoi dispositivi Android con il tuo server Appium, dobbiamo passare le capacità desiderate specifiche. Aiuterà il server Appium a identificare in modo univoco i dispositivi Android collegati. Di seguito gli elenchi:

1. Devi passare la chiave come "nomepiattaforma"O" MobileCapabilityType.PLATFORM_NAME"E valore come"iOS"

2. Devi passare la chiave come "platformVersion" o "MobileCapabilityType.VERSIONE_PIATTAFORMA"E valore come"13.6"[Controlla la versione del tuo sistema operativo]

3. Devi passare la chiave come "nome del dispositivo" o "MobileCapabilityType.NOME DEL DISPOSITIVO"E valore come"iPhone 11 Pro Max"[Aggiorna il valore con il nome del tuo dispositivo]

4. Devi passare la chiave come "nomeautomazione" o "MobileCapabilityType.AUTOMATION_NAME"E valore come"XCUITest"[ uso XCUITest(iOS 9.3 e versioni successive) o UIAutomazione(iOS 9.3 e versioni precedenti)]

5. Devi passare la chiave come "udid" o "MobileCapabilityType.TU HAI FATTO"E valore come"3C4B567E-C4E4-445D-A613-F4867DD2FF67"[Aggiorna con il tuo ID dispositivo]

6. Fare riferimento all'immagine sottostante per i dettagli:

Aggiunta delle funzionalità desiderate per iOS
Aggiunta delle funzionalità desiderate per iOS

Come scrivere uno script di test Appium (Android)

  1. Per scrivere il tuo primo script di test Appium, inizialmente, dobbiamo ottenere l'ID dispositivo dei dispositivi Android o dell'emulatore collegati. Per ottenere l'ID del dispositivo, apri il terminale o il prompt dei comandi e digita "adb devices". Mostrerà l'elenco dei dispositivi.
  2. Dopodiché, dobbiamo creare una classe java. Per creare una classe java, vai alla cartella "/ src / main / java /" nel tuo IDE, fai clic destro su di essa e scegli new -> Java Class.
  3. Ora aggiungeremo un metodo di configurazione in Prima del test e crea un'istanza di AndroidDriver.
  4. Dobbiamo aggiungere le capacità desiderate mostrato sopra per impostare i parametri del dispositivo.
  5. Creeremo ora un file URL con i dettagli del mozzo dove il file Appium è in esecuzione.
  6. Ora chiameremo AndroidDriver costruttore e passare l'URL e le capacità desiderate per inizializzare il driver.
  7. Nel metodo Test, eseguiremo le azioni e affermeremo i risultati desiderati. Sapere come ispezionare l'elemento sull'iPhonefare riferimento a questo collegamento. Per conoscere i metodi Appiumclicca qui.
  8. Abbiamo fornito un codice di esempio di seguito come riferimento. Per favore, esaminalo.
  9. Nel metodo AfterTest, chiuderemo il driver per chiudere la sessione corrente.

Come creare una classe Java per i test di Appium

Per creare una classe java, guarda l'immagine qui sotto:

Come creare una classe java
Come creare una classe java

Esempio di codice di test Appium in Android

import io.appium.java_client.MobileElement;
import io.appium.java_client.android
        .AndroidDriver;
import io.appium.java_client.remote
        .MobileCapabilityType;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote
        .DesiredCapabilities;
import org.openqa.selenium.support
        .ui.ExpectedConditions;
import org.openqa.selenium.support
        .ui.WebDriverWait;
import org.testng.Assert;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.TimeUnit;
public class RunFirstTestAndroid {
    private AndroidDriver driver;
    @BeforeTest
    public void setup() throws MalformedURLException {
        DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
        desiredCapabilities
                .setCapability
                        ("platformName", "Android");
        //desiredCapabilities
        // .setCapability(MobileCapabilityType
        // .PLATFORM_NAME, "Android");
        desiredCapabilities
                .setCapability
                        ("platformVersion", "23");
        //desiredCapabilities
        // .setCapability(MobileCapabilityType
        // .PLATFORM_VERSION, "23");
        desiredCapabilities
                .setCapability
                        ("deviceName", "Nexus 5X");
        //desiredCapabilities
        // .setCapability(MobileCapabilityType
        // .DEVICE_NAME, "Nexus 5X");
        desiredCapabilities
                .setCapability
                        ("automationName", "UIAutomator2");
        desiredCapabilities
                .setCapability
                        (MobileCapabilityType.UDID, "emulator-5554");
        desiredCapabilities
                .setCapability
                        ("udid", "emulator-5554");
        desiredCapabilities
                .setCapability(
                        "ensureWebviewsHavePages", true);
        desiredCapabilities
                .setCapability
                        ("appPackage", "com.android.contacts");
        //desiredCapabilities
        // .setCapability(MobileCapabilityType
        // .App, "com.android.contacts");
        desiredCapabilities
                .setCapability
                        ("appActivity",
                                "com.android.contacts" +
                                        ".activities.PeopleActivity");
        URL remoteUrl = new URL("http://127.0.0.1:4723/wd/hub");
        driver = new AndroidDriver(remoteUrl, desiredCapabilities);
        driver.manage().timeouts()
                .implicitlyWait(20, TimeUnit.SECONDS);
    }
    @Test
    public void sampleTest() throws InterruptedException {
        //Adding new contact
        driver.findElementByAccessibilityId
                ("add new contact")
                .click();
        //clicking on OK button
        WebElement element=driver
                .findElementById
                        ("com.android.contacts" +
                                ":id/right_button");
        element.click();
        //Updating the firstname
        driver.findElementByXPath(
                "/hierarchy/android.widget."  + "FrameLayout/android.view" + ".ViewGroup/android.widget" + ".FrameLayout[2]/android" + ".widget.FrameLayout/android.widget" + ".ScrollView/android.widget" + ". LinearLayout/android.widget" + ".LinearLayout[2]/android.widget" + ".LinearLayout/android.widget" + ".LinearLayout/android.widget" + ".LinearLayout/" + "android.widget.EditText" ) .sendKeys("Ciao"); //aggiornamento del driver del numero di telefono .findElementByXPath("//android.widget" + ".EditText[@text='Phone']") .sendKeys("1234567890"); //aggiornamento del driver ID e-mail .findElementByXPath("//android.widget" + ".EditText[@text='Email']") .sendKeys("xyz@gmail.com"); //salva il driver del contatto .findElementById("com.android" + ".contacts" + ":id/menu_save") .click(); WebDriverWait wait=nuovo WebDriverWait(driver,30); WebElement el=driver .findElementByXPath("//android.view" + ".View[@content-desc=\"Hello\"]"); wait.until(ExpectedConditions .visibilityOfAllElements(el)); Assert.assertEquals(el .getAttribute("content-desc"),"Ciao"); Assert.assertEquals(driver .findElementByXPath("\t\n" + "//android.widget" + ".RelativeLayout[@content-desc=" + "\"Chiama Mobile 1 234-567-890\"]" + "/android.widget.TextView[1]") .getText(),"1 234-567-890"); Assert.assertEquals(driver.

Come scrivere uno script di test Appium su iPhone

  1. Per scrivere il tuo primo script di test Appium, inizialmente, dobbiamo ottenere l'ID del dispositivo dei dispositivi iPhone o del simulatore collegati. Per ottenere l'ID del dispositivo, apri il tipo di terminale "xcrun simctl list | egrep '(Avviato).' "Mostrerà l'elenco dei dispositivi. per favore fare riferimento a questo collegamento per ulteriori informazioni.
  2. Dopodiché, dobbiamo creare una classe java. Per creare una classe java, vai alla cartella "/ src / main / java /" nel tuo IDE, fai clic destro su di essa e scegli new -> Java Class.
  3. Ora aggiungeremo un metodo di configurazione in Prima del test e crea un'istanza di Driver IOS.
  4. Dobbiamo aggiungere le capacità desiderate mostrato sopra per impostare i parametri del dispositivo.
  5. Creeremo ora un file URL con i dettagli del mozzo dove il file Appium è in esecuzione.
  6. Ora chiameremo il driver IOSDriver costruttore e passare l'URL e le capacità desiderate per inizializzare il driver.
  7. Nel metodo Test, eseguiremo le azioni e affermeremo i risultati desiderati. Sapere come ispezionare l'elemento sull'iPhonefare riferimento a questo collegamento. Per conoscere i metodi Appiumclicca qui
  8. Abbiamo fornito un codice di esempio di seguito come riferimento. Per favore, esaminalo.
  9. Nel metodo AfterTest, chiuderemo il driver per chiudere la sessione corrente.

Esempio di codice di test Appium per iPhone

import io.appium.java_client.MobileElement; importa io.appium.java_client.ios.IOSDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.remote .DesiredCapabilities; import org.openqa.selenium.support .ui.ExpectedConditions; import org.openqa.selenium.support .ui.WebDriverWait; import org.testng.Assert; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import java.net.MalformedURLException; importare java.net.URL; importare java.util.concurrent.TimeUnit; classe pubblica RunFirstiOSTest { driver IOSDriver privato; @BeforeClass DesiredCapabilities desireCapabilities = new DesiredCapabilities(); desireCapabilities .setCapability("platformName", "iOS"); desireCapabilities .setCapability("platformVersion", "13.6"); desireCapabilities .setCapability("deviceName", "iPhone 11 Pro Max"); desireCapabilities .setCapability("AutomationName", "XCUITest"); desireCapabilities .setCapability("udid", "3C4B567E-C4E4-445D-A613-F4867DD2FF67"); URL remoteUrl = nuovo URL("http://127.0.0.1:4723/wd/hub"); driver = new IOSDriver(remoteUrl, desireCapabilities); driver.manage().timeouts() .implicitlyWait(20, TimeUnit.SECONDS); } @Test public void sampleTest() { // Fare clic sull'app di contatto MobileElement el1 = (MobileElement) driver .findElementByAccessibilityId ("Contatti"); el1.click(); //Cliccando su Aggiungi contatto MobileElement el2 = (MobileElement) driver .findElementByAccessibilityId ("Aggiungi"); el2.click(); //Invio del valore al nome MobileElement el3 = (MobileElement) driver .findElementByAccessibilityId ("Nome"); el3.sendKeys("Nome1"); //Invio del valore al Cognome driver.findElementByAccessibilityId ("Cognome") .sendKeys("Cognome"); //Invio del valore al driver dell'azienda .findElementByAccessibilityId ("Azienda") .sendKeys("xyz"); //Facendo clic sul driver principale .findElementByXPath ("//XCUIElementTypeCell[@name=\"add phone\"]") .click(); //Esempio di attesa esplicita. 

testNG Asserzione

Nel codice precedente, abbiamo utilizzato testNG Assert per verificare i dati previsti con i dati effettivi che stiamo ottenendo dagli elementi utilizzando i metodi getText () o getAttributes. Assert ci aiuta a far passare il test case se le condizioni soddisfano; in caso contrario, fallisce il test case.

Conclusione

Fino ad ora, abbiamo coperto come scrivere i tuoi primi script di test Appium in Android e iOScome usare le capacità desiderate, come creare un progetto esperto. Nella prossima sessione discuteremo Domande e risposte sui test Appium. Per un tutorial completo su Appium, puoi clicca qui

Riferimento

  1. Maven
  2. TestNG
Scorrere fino a Top