Tribalyte Technologies Tribalyte Technologies
  • Inicio
  • Misión y visión
  • Nuestros expertos
  • Nuestras soluciones
  • Casos de éxito
  • Blog
  • Contáctanos
  • Únete al equipo
Tribalyte Technologies Tribalyte Technologies
  • Inicio
  • Misión y visión
  • Nuestros expertos
  • Nuestras soluciones
  • Casos de éxito
  • Blog
  • Contáctanos
  • Únete al equipo
Ago 30

Ejemplo práctico con Appium: App móvil híbrida

  • agosto 30, 2018
  • José Carlos Fatjó
  • No Comments
  • Consejos tecnológicos, Desarrollo de aplicaciones, Desarrollo de software

En una entrada anterior ya hicimos una breve introducción de Appium en la que vimos su funcionamiento y características. Esta entrada continúa la anterior con un ejemplo práctico.

El objetivo de esta nueva entrada es mostrar paso a paso la configuración de un entorno de pruebas y la implementación de un test para una aplicación de ejemplo en un sistema operativo Linux. Para ello, supondremos que en este punto se dispone de los siguientes elementos:

  • Java VM
  • Android SDK
  • Node.js
  • Npm
  • Una aplicación web o híbrida (.apk)
  • Un dispositivo Android

Instalación de Appium

Antes de comenzar, debemos asegurarnos de haber instalado node sin privilegios de usuario, es decir, sin sudo. La forma más sencilla es descargar e instalar la última versión de node desde su propia web nodejs.org.

Otro dato a tener en cuenta es que debemos tener las variables de entorno de JAVA_HOME y ANDROID_HOME correctamente configuradas y añadidas a PATH:

export ANDROID_HOME="/<your-path-to-Android>/Android/Sdk"
export JAVA_HOME="/<your-path-to-java>/java-8-oracle"
export PATH="$PATH:$ANDROID_HOME::$ANDROID_HOME/bin:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools"

 

A continuación, instalar Appium según lo indicado en su página:

npm install -g appium
npm install -g appium-doctor
npm install wd

Para asegurarnos de que tenemos todos las configuraciones previas necesarias, ejecutamos appium-doctor:
image3

Por último, ejecutamos appium:

image5

Configuración del entorno de desarrollo

Antes de empezar a preparar el entorno de desarrollo debemos descargar Selenium Standalone Server desde su página de descargas y Appium Java Client desde Maven.

El entorno de desarrollo que hemos utilizado es eclipse, el cual puedes descargar desde su web de descargas.

Una vez descargado e instalado, creamos un nuevo proyecto Java:
image7

Accedemos a la configuración del Build Path haciendo Click derecho sobre el proyecto > Build Path > Configure Build Path > Pestaña Libraries:

image1

Añadimos los ficheros .jar de Selenium Standalone Server y Appium Java Client haciendo Click en Add External JARs > Seleccionar los ficheros > Aceptar. Necesitaremos también la biblioteca de JUnit, por lo que debemos hacer Click en Add Library > Seleccionar JUnit > Next > Finish.

image9

Para guardar todos los cambios hacemos Click en Apply and Close. El resultado en el proyecto debe verse como a continuación:

image4

Implementación de los casos de prueba

Una vez configurado el entorno, nos disponemos a implementar los casos de prueba. Creamos una nueva clase dentro de src:

image8

Lo primero que debemos hacer es crear el método setUp y el método tearDown, que se ejecutarán antes de después de las pruebas respectivamente:

package appiumTest;

import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;

import org.junit.After;
import org.junit.Before;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;

import io.appium.java_client.AppiumDriver;

public class TestCases {

    AppiumDriver driver;
    
    @Before
    public void setUp() throws MalformedURLException {
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability("deviceName", "");
        capabilities.setCapability(CapabilityType.PLATFORM_NAME, "Android");
        capabilities.setCapability("platformVersion", "7");
        
        File file = new File("apk folder", "apk name");
        capabilities.setCapability("app", file.getAbsolutePath());
        
        driver = new AppiumDriver(new URL("endpoint address"), capabilities);
    }
    
    @After
    public void tearDown() {
        driver.quit();
    }
}

Como es de esperar, añadimos también el método de prueba, donde incluiremos las operaciones que queremos que se ejecuten:


@Test
public void TestMethod() {
	
}

 

En este momento debemos hacer uso de la herramienta monitor de Android SDK para acceder a los distintos elementos presentes en cada pantalla de la aplicación. Como hemos comentado anteriormente, debemos tener bien configuradas las variables de entorno, en cuyo caso, simplemente escribimos monitor en el terminal:

image10

Si disponemos de un terminal Android y este se encuentra conectado, la herramienta monitor lo va a detectar y nos lo mostrará:

image2

NOTA: La herramienta monitor es la que se conocía como uiautomatorviewer, la cual comentamos en el primer post sobre Appium. Más información en el siguiente enlace.

Ejecutamos la aplicación y en la herramienta monitor nos aparecerá debajo del dispositivo. Para acceder a los elementos de la vista que se muestra actualmente en la aplicación debemos hacer Click en Screen Capture > Done > Click en Dump View Hierarchy for UI Automator:

image6

Una vez seleccionamos un elemento, podemos ver sus propiedades, las cuales vamos a utilizar en el método TestMethod que creamos anteriormente:

@Test
public void TestMethod() {
	MobileElement homeTab = (MobileElement) driver.findElement(By.id("tab-t0-0"));
	homeTab.click();
	
	MobileElement aboutTab = (MobileElement) driver.findElement(By.id("tab-t0-1"));
	aboutTab.click();
	
	MobileElement contactTab = (MobileElement) driver.findElement(By.id("tab-t0-2"));
	contactTab.click();
}

Una vez terminado de crear el método, lanzamos el programa como JUnitTest y vemos cómo se ejecuta en el dispositivo. Con esto ya podemos seguir creando casos de prueba y probando nuestras propias app o como parte del departamento de control de calidad (QA) de nuestra empresa.
Nuevamente espero que haya servido de ayuda y que dé un pequeño empujón a quienes no tenían claro los primeros pasos en la creación de pruebas automatizadas con Appium. ¡Nos vemos en el próximo post!.

Artículos Relacionados:

  • revisión códigoLa importancia de la revisión de código como parte de la política de calidad de la organización
  • image2Introducción a Angular Material
  • Nueva versión de Fissios appNueva versión de Fissios app
  • image1Cómo crear un bot conversacional con DialogFlow
  • Entendiendo CSS (parte 2)Entendiendo CSS (parte 2)
  • Facebook
  • Twitter
  • LinkedIn
  • E-Mail

About The Author

JC es desarrollador de software. Se aplica en el aprendizaje y desarrollo de apps web y multiplataforma basadas en TypeScript, Angular, Bootstrap y Foundation, y en la implementación de pruebas automatizadas. Posee una alta cualificación en el desarrollo de software orientado a objetos (OOP).

Related Posts

  • Introducción a pruebas automatizadas con Appiummayo 31, 2018

Leave a reply Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

ELIGE UNA CATEGORÍA

  • Blockchain
  • Consejos tecnológicos
  • Desarrollo de aplicaciones
  • Desarrollo de software
  • Sistema embebido
  • Tecnologías

Suscríbete a nuestra newsletter y entérate de las últimas tendencias tecnológicas.

Una compañía dedicada al desarrollo y la mejora de plataformas tecnológicas globales.

SOCIOS

Contacto

Glorieta de Quevedo 8 6º2
28015 Madrid (ESPAÑA)
Phone: +34 910 177 514 E-Mail: contact@tribalyte.com Web: www.tribalyte.com

AYUDA

  • Política de privacidad
  • Política de calidad
  • Términos de uso

CERTIFICACIONES

INTERNACIONALIZACIÓN

  Tribalyte     Technologies S.L. en   el Marco del Programa de Iniciación a la Exportación del Prog. ICEXNEXT, ha contado con el apoyo del ICEX y con la cofinanciación del fondo Europeo FEDER. La finalidad de este apoyo es contribuir al desarrollo Internacional de la empresa y de su entorno.
Esta página web utiliza cookies para mejorar su experiencia de usuario y para recabar estadísticas anónimas de uso. Aceptar Más información