Test mobile - Selendroid Framework

Selendroid è un framework di automazione dei test per testare applicazioni Android native e ibride. I test Selendroid vengono scritti utilizzando l'API client Selenium Webdriver.

Vantaggi di Selendroid

  • Pienamente compatibile con JSON Wire Protocol / Selenium 3 Ready.

  • Nessuna modifica dell'app in prova richiesta per automatizzarla.

  • Test del Web mobile utilizzando l'app Webview del driver Android integrata.

  • Stesso concetto per l'automazione di app native o ibride.

  • Gli elementi dell'interfaccia utente possono essere trovati da diversi tipi di localizzatore.

  • Sono supportati i gesti: API Advanced User Interactions.

  • Gli emulatori esistenti vengono avviati automaticamente.

  • Selendroid supporta il collegamento a caldo dei dispositivi hardware.

  • Integrazione completa come nodo in Selenium Grid per scalabilità e test paralleli.

  • Supporto per più API di destinazione Android (da 10 a 19).

  • Inspector integrato per semplificare lo sviluppo del test case.

  • Selendroid può essere esteso in fase di esecuzione con le proprie estensioni.

  • Selendroid può interagire con più dispositivi Android (emulatori o dispositivi hardware) contemporaneamente.

Inconvenienti di Selendroid

Lo svantaggio di questo strumento è che è piuttosto lento e su alcune macchine con meno di 4 GB di RAM è inutilizzabile.

Come usare Selendroid

Step 1- I prerequisiti per utilizzare Robotium è Java SDK (minimo 1.6). Se non hai Java installato sul tuo sistema, segui i passaggi indicati di seguito.

  • Scarica JDK e JRE da Oracle JavaSE

  • Accetta il contratto di licenza.

  • Installa JDK e JRE.

  • Imposta la variabile d'ambiente come mostrato nello screenshot qui sotto.

Step 2- Scarica Android Studio dall'SDK Android (ci vorrà del tempo a causa delle dimensioni del file).

  • Fare doppio clic sull'exe ed eseguire il programma di installazione.
  • Continua con tutte le opzioni predefinite.
  • Imposta ANDROID_HOME.

Step 3- Scarica i file jar selenio e prova l'applicazione da Selendroid

  • Scarica il file jar selenio e prova l'app.
  • Inseriscilo in una cartella qualsiasi, ad esempio D: \ SelendroidJars.

Step 4 - Dispositivo fisico con cavo USB.

  • Assicurati che il dispositivo sia collegato alla workstation con un cavo USB.

  • Assicurati che la modalità di debug USB (in impostazioni → Opzioni sviluppatore) sia abilitata.

Prova un'app con Selendroid

Per testare un'app utilizzando Selendroid, segui i passaggi indicati di seguito:

Step 1 - Installa Eclipse.

Step 2 - Crea un progetto Java.

Step 3 - Aggiungi il file jar Selendroid scaricato al progetto appena creato.

Step 4 - Aggiungi i file jar Selenium scaricati al progetto appena creato.

Step 5 - Configurare testNG in Eclipse.

Step 6- Collegare i dispositivi mobili al sistema tramite cavo USB. Imposta la modalità di debug USB dalle opzioni dello sviluppatore nelle impostazioni.

Step 7- Esegui il server Selendroid. Apri il prompt dei comandi e scrivi il seguente codice e premi Invio -

java -jar selendroid-standalone-0.17.0-with-dependencies.jar -app selendroid-test-app-0.17.0.apk

Selendroid-standalone avvierà un server http sulla porta 4444 e scansionerà tutti i dispositivi virtuali Android (avd) che l'utente ha creato (~ / .android / avd /).

Apri il browser web e vai a: http://localhost:4444/wd/hub/status.

Step 8- Crea un progetto Java; aggiungere le librerie Selendroid Standalone, i vasi Selenium e le librerie JUnit nel percorso di compilazione.

Step 9 - Crea pacchetto nel progetto Java.

Step 10 - Crea una classe sotto il pacchetto e scrivi il codice seguente.

package selTest;

import io.selendroid.SelendroidDriver; 
import io.selendroid.common.SelendroidCapabilities;
import io.selendroid.standalone.SelendroidConfiguration;
import io.selendroid.standalone.SelendroidLauncher;

import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.WebElement; 

import org.testng.Assert; 
import org.testng.annotations.AfterSuite; 
import org.testng.annotations.BeforeSuite; 
import org.testng.annotations.Test;

public class SelendroidTest {

   private WebDriver driver ;

   @BeforeSuite 
   public void setUp() throws Exception {
      SelendroidConfiguration config = new SelendroidConfiguration();
      config.addSupportedApp("selendroid-test-app-0.9.0.apk");
      SelendroidLauncher selendroidServer = new SelendroidLauncher(config);
      selendroidServer.launchSelendroid();
	  
      SelendroidCapabilities caps = new
         SelendroidCapabilities("io.selendroid.testapp:0.9.0"); 
      driver = new SelendroidDriver(caps);
   }
   
   @Test 
   public void selendroidTest() throws Exception {
      WebElement inputField = driver.findElement(By.id("my_text_field"));
      Assert.assertEquals("true", inputField.getAttribute("enabled"));
      inputField.sendKeys("Selendroid");
      
      Assert.assertEquals("Selendroid", inputField.getText());
	  
      WebElement button = driver.findElement(By.id("buttonTest"));
      button.click();
	  
      button = driver.findElement(By.id("button2"));
      button.click();
      
      Thread.sleep(5000);
	  
      button = driver.findElement(By.id("startUserRegistration"));
      button.click();
      
      Thread.sleep(10000);
	  
      WebElement element = driver.findElement(By.id("label_username")); 
      
      String text = element.getText();
      System.out.println(text);
      element = driver.findElement(By.id("inputUsername"));
      element.sendKeys("bob");
      
      element = driver.findElement(By.id("inputEmail"));
      element.sendKeys("[email protected]"); 
      
      element = driver.findElement(By.id("inputPassword"));
      element.clear();
      element.sendKeys("test1233");
      
      element = driver.findElement(By.id("inputName"));
      element.clear(); 
      element.sendKeys("My Name ");
	  
      element = driver.findElement(By.id("input_preferedProgrammingLanguage")); 
      element.click();
      
      element = driver.findElement(By.id("text1"));
      element.click();
	  
      element = driver.findElement(By.id("input_adds"));
      element.click();
	  
      element = driver.findElement(By.id("btnRegisterUser"));
      element.click();
      
      element = driver.findElement(By.id("buttonRegisterUser"));
      element.click(); 
   }
   
   @AfterSuite 
   public void tearDown(){ 
      driver.quit(); 
   } 
}

Step 11 - Esegui la classe con testNG run configuration.