Publicado: Abril 6, 2020
La guía completa para pruebas móviles con Selenium
En nuestro entorno DevOps En esta era, el desarrollo continuo y el despliegue continuo son el objetivo clave de los entornos de desarrollo de software. El código se desarrolla continuamente y continuamente probado Además, las herramientas de automatización de pruebas son clave para el despliegue continuo de aplicaciones. Selenium es una popular herramienta de automatización de pruebas que ayuda a los desarrolladores de Selenium a integrar las pruebas continuas en el desarrollo. Es compatible con múltiples navegadores, plataformas y sistemas operativos.
Sin embargo, la proliferación de smartphones ha traído al mercado una amplia gama de dispositivos, plataformas y sistemas operativos. Antes, las pantallas de los móviles eran pequeñas y su diseño no era intuitivo. Eso ha cambiado con las pantallas actuales. Las aplicaciones diseñadas para móviles son ahora la nueva tendencia. Esto exige que las empresas reajusten sus estrategias de pruebas para adaptarse a esta nueva realidad. soluciones de aplicaciones móviles.
Las aplicaciones móviles son fáciles de usar y más accesibles. Hoy en día, cada vez más personas utilizan dispositivos móviles para comprar en línea o suscribirse a cualquier servicio. Actualmente, el 60 % de los recursos empresariales se consultan a través de dispositivos móviles. Sin embargo, la mayoría de los testers utilizan Selenium para pruebas móviles en lugar de Appium para probar soluciones de automatización.
¿Es compatible Selenium con las pruebas de aplicaciones móviles? Si bien no ofrece soporte directo para pruebas móviles, sí proporciona frameworks para ello. Selendriod es un framework de pruebas móviles basado en Selenium que permite a las empresas ejecutar pruebas automatizadas en dispositivos Android. Sin embargo, las opciones son limitadas. Aquí es donde Appium resulta fundamental para los desarrolladores de pruebas móviles con Selenium. Appium es un potente framework de automatización de pruebas móviles basado en Selenium que ofrece compatibilidad multiplataforma y multitecnología. Permite escribir código de prueba único tanto para Android como para iOS.
Si quieres saber más sobre las pruebas con Selenium y Appium usando SeeTest, haz clic aquí.
Protocolo tecnológico
Selenium y Appium utilizan el mismo protocolo: JSON Wire. Este protocolo se convirtió recientemente en un estándar del W3C. Hoy en día, numerosas industrias, así como proveedores de navegadores, lo están implementando como protocolo estándar.
Arquitectura de Selenium

Selenium permite escribir código en diferentes lenguajes como Java, PHP, C# y Python. El código se ejecuta mediante el protocolo JSON Wire, una API REST que se utiliza para controlar el navegador. Cuando el código se ejecuta como una solicitud HTTP REST, el servidor de Selenium crea una nueva sesión. A continuación, invoca el controlador del navegador (Chrome, Safari o Edge) para acceder a él. El navegador envía la información solicitada al servidor de Selenium a través del controlador, que luego la envía al cliente.
Componentes de Selenium Grid

Selenium Grid consta de tres componentes principales. El Hub de Selenium Grid es el servidor que distribuye las tareas de prueba a los nodos. Este servidor decide qué nodo recibirá la prueba según las capacidades predefinidas. El Nodo de Selenium Grid es la máquina que ejecuta las pruebas recibidas del Hub. Cada servidor puede tener varios nodos. La URL wd/hub facilita la comunicación entre el Hub y los nodos.
Arquitectura de Appium

La arquitectura de Appium es bastante similar a la de Selenium. Appium también permite a los desarrolladores de pruebas móviles con Selenium escribir código en múltiples lenguajes, como Java, PHP, C#, Python, Ruby, JavaScript (WebdriverIO) y JavaScript (WD). Sin embargo, Appium también implementa otras opciones. Por ejemplo, al usar Java, hereda de RemoteWebDriver. El servidor de Appium se puede instalar localmente o en la nube. Cuando se ejecuta el comando `createSession()` desde el cliente de Appium mediante el protocolo JSON Wire, el servidor de Appium crea una nueva sesión en el dispositivo móvil a través del controlador de Appium (controlador de Android/controlador de iOS). Para dispositivos Android, utiliza la infraestructura ADB de Android. Si es necesario, creará APK en el equipo. Para iOS, utiliza el framework del IDE móvil y se comunica con la línea de comandos.
La idea es ejecutar pruebas ficticias sin fin en dispositivos móviles. En iOS, se ejecuta XCUITest. Las pruebas están controladas por el servidor.
Instalación de Appium
Instalar Appium en Android es bastante sencillo. Sin embargo, se complica un poco al trabajar con dispositivos iOS. El principal problema es que no se puede simplemente instalar una aplicación en el dispositivo. Al tratarse de aplicaciones para desarrolladores, cada una debe estar firmada para el dispositivo. Si bien se pueden usar emuladores, es posible obviar algunos requisitos. Además, se necesita un ID de desarrollador de Apple, un certificado de desarrollo válido, un perfil de aprovisionamiento, un archivo .ipa firmado, Xcode y las herramientas de desarrollo de línea de comandos. Asimismo, es necesario configurar el dispositivo para el desarrollo en Xcode.
Por ejemplo, si utiliza Java, deberá realizar las siguientes tareas:
- Configurar Java
- Instalar Homebrew
- A continuación, instala Node.js y npm.
- Luego, instala Appium.
- npm install -g appium
- Finalmente, instala wd
- npm install wd
- Configurar Appium para iOS en un dispositivo que instalará ilibmobiledevice
- configurar el controlador XCUITest
Puedes consultar este tutorial para ver los pasos para instalar Appium.
http://appium.io/docs/en/about-appium/getting-started/#installing-appium
Matriz de portada
Para probar aplicaciones de Android, puedes usar ordenadores con Windows, Mac o Linux. Sin embargo, para probar aplicaciones de iOS, necesitas un dispositivo Mac. La nube funciona tanto para aplicaciones de iOS como de Android.
Dispositivo móvil vs. navegador
Antes de pasar a las pruebas en dispositivos móviles, es importante comprender las diferencias ambientales entre los dispositivos móviles y los navegadores.
- gestos: Los dispositivos móviles utilizan diferentes opciones de entrada o gestos como deslizar, pellizcar, tocar con dos dedos, tocar con varios dedos, etc., que no están disponibles en los navegadores web.
- Sistema de URL diferente: Las aplicaciones móviles son específicas para dispositivos móviles, en los que no se utilizan las URL web convencionales.
- Dispositivos reales y emuladores: Las pruebas se realizan en dispositivos reales y simuladores. En Android, se utilizan los mismos archivos APK para ambas opciones. Sin embargo, en iOS, se emplean tecnologías diferentes para dispositivos reales y simuladores, ya que los simuladores se ejecutan en arquitecturas de 64 bits (x64) mientras que los dispositivos reales utilizan procesadores ARM. Por lo tanto, será necesario realizar pruebas en ambas plataformas.
- Botones: Los dispositivos móviles incluyen botones como Inicio, Encendido y Volumen. Debes tenerlos en cuenta durante las pruebas.
- Pantalla de inicio: Los dispositivos móviles tienen una pantalla de inicio con una barra de notificaciones. Por lo tanto, deben tenerse en cuenta las interacciones en la pantalla de inicio.
- Pantalla giratoria: La pantalla del móvil se puede cambiar a modo vertical u horizontal, lo que modifica el tamaño de la pantalla.
- Diferentes conexiones de red: Deben tenerse en cuenta las condiciones de la red, como 2G, 3G, 4G y 5G. En particular, deben realizarse pruebas funcionales a diferentes velocidades de internet.
Aplicaciones móviles frente a aplicaciones web
En lo que respecta a las aplicaciones, las aplicaciones móviles son diferentes de sus contrapartes web:
- Ciclo de vida de la aplicación: El ciclo de vida de una aplicación móvil es diferente y complejo. Puedes instalar, desinstalar, ejecutar y cerrar aplicaciones.
- Navegación con estado: Las aplicaciones móviles recuerdan tu sesión y responden en consecuencia la próxima vez que inicies sesión. Es más fiable en cuanto al estado de la sesión. La navegación también es sencilla.
- Tecnologías de interfaz de usuario DOM: son diferentes para iOS y Android
- Programación del lado del cliente: Por ejemplo, JavaScript no está disponible en las aplicaciones móviles.
- Herramienta de depuración: (ej.: F12 en Chrome) no está disponible.
Funcionalidad móviles
Para las capacidades locales, debe especificar los siguientes detalles:
- Nombre de la plataforma: Especifique la plataforma (iOS / Android).
- Nombre del dispositivo: Especifique el nombre del dispositivo (ya que utilizará varios dispositivos).
- nombre de automatización: Especifique la tecnología de automatización utilizada (por ejemplo: XCUITest para iOS).
- aplicación: Para instalar una aplicación, especifique la ruta del archivo APK.
- bundleId/appActivity: Especifica el ID del paquete de la app. En Android, puedes iniciar actividades de paquete y actividades específicas desde tu aplicación. En iOS, en cambio, solo dispones de actividades de paquete.
Funcionalidad en la nube
Cuando los desarrolladores de Selenium utilizan la tecnología en la nube:
- Clave de acceso: La clave de acceso permite realizar pruebas remotas.
- Consulta de dispositivo: Para encontrar los dispositivos que se utilizan en la nube
Comandos móviles
Para sobrecargar los comandos móviles, los desarrolladores de Selenium pueden usar ExecuteScript. Algunos de los comandos móviles relacionados con la aplicación son:
- instalar aplicación
- lanzarAplicación
- resetApp
- eliminarAplicación
- terminarAplicación
- ejecutarAplicaciónEnSegundoPlano
Algunos ejemplos de comandos de dispositivo
- Bloquear
- Descubrir
- Girar
- Agitación
- ocultarTeclado
- esBloqueo
En esta página de Appium encontrarás todos los comandos disponibles: http://appium.io/docs/en/commands/mobile-command/
¿Cómo crear una prueba móvil utilizando Selenium y Appium?
Usando Selenio
Paso 1: Crear archivo Gradle
Para comenzar la prueba, abre tu IDE. Por ejemplo, si estás usando Java, puedes ir a IntelliJ IDEA.
- Crear un nuevo proyecto
- Seleccione Gradle (también puede usar otras opciones como Maven).
- Asigna un nombre al proyecto (ej.: Selenium 2).
- Haga clic en Finalizar
Paso 2: Agregar Selenium a Gradle
- Para agregar código para Selenium Gradle, vaya a Google y busque Selenium Gradle.
- Abre el enlace del repositorio Maven: https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java/2.41.0
- Haz clic en la versión más reciente

- Al hacer clic en la nueva versión, se muestra la nueva versión. Sin embargo, ahora se muestra la versión alfa. Haga clic en Selenium Java.

- Elige la última versión en la página siguiente.

- Copia el código de la página siguiente y pégalo en el cuadro de dependencias del IDE. Se descargarán todas las dependencias necesarias, en caso de que tu dispositivo no las tenga.

- Usaremos TestNG para esta prueba. Importa Selenium, TestNG y el controlador de Chrome. Puedes descargar el controlador de Chrome aquí: https://chromedriver.chromium.org/
- Crea un nuevo paquete (directorio) y nómbralo (ej.: William.demo).
- Crea una clase (por ejemplo: williamSeleniumdemo)
- Ahora ya tienes todos los elementos necesarios. Escribe el código para una prueba de Selenium.
- Por ejemplo, usar driver.get() para abrir una URL y esperar a que se cargue la página.
- Driver.navigate() para navegar entre páginas
- encontrarElemento(Por.xpath())
- driver.quit() para cerrar todos los navegadores
- Ejecuta la prueba
Prueba de Appium
Probar dispositivos iOS con Appium es algo más complejo que con dispositivos Android. Por lo tanto, esta guía de pruebas utilizará un dispositivo iOS.
- Abre el IDE de IntelliJ.
- Agrega las dependencias de Appium al archivo Gradle (elimina las dependencias de Selenium, si las hay).
- Instala el controlador de iOS (WebDriver no tiene comandos específicos para iOS).
- Los desarrolladores de Selenium pueden usar la prueba de Selenium como base y modificarla para adaptarla a la prueba de iOS.
- Defina las capacidades deseadas (Esto le ayudará a establecer un mapa de valores clave para definir la forma de iniciar sesión en la nube, el lanzamiento de aplicaciones, etc.).
- Necesitas una clave de acceso para acceder a los dispositivos. Por lo tanto, ve a tu entorno en la nube y crea una clave de acceso.
- Crea un nombre para la prueba (ej.: prueba WilliamAppium)
- Selecciona la aplicación que deseas usar y obtén el ID del paquete. También puedes acceder al entorno en la nube y cargar la aplicación en el dispositivo.
- Defina el MobileCapabilityType
- Inicie el controlador creando un nuevo controlador iOS y proporcione la URL de wd.
- Ahora, ejecuta la prueba desde el IDE. Esto iniciará el controlador y ejecutará la prueba en dispositivos móviles.
- Acceda a la página en la nube y abra el dispositivo para ver en directo cómo se instala, se inicia y se cierra la aplicación.
Ejecutando la prueba desde la aplicación Appium

- Ve a Appium
- Crear una nueva sesión
- Existen múltiples proveedores de servicios en la nube. Elija un proveedor de servicios en la nube.

- Introduzca el nombre de usuario y la clave de acceso.
- Define el nombre de la plataforma (ej.: iOS)
- Define la consulta del dispositivo (ej.: os=iOS)
- Haz clic en Iniciar sesión
- El dispositivo se seleccionará automáticamente. Puede usar la aplicación de escritorio de Appium para identificar los diferentes elementos y sus propiedades.
- escribe el codigo
- Driver.findelement(by.xpath)
- Sendkeys() (nombre de usuario y contraseña)
- Ejecuta el código. Ahora, seleccionará un dispositivo diferente.
- Acceda a la nube y compruebe cómo se ejecuta la prueba en diferentes dispositivos.
- Puedes establecer un punto de interrupción para depurar.
¡Eso es todo! Ahora los desarrolladores de Selenium han ejecutado con éxito las pruebas utilizando Appium.
Haz clic aquí para obtener más información sobre las pruebas de Appium y Selenium con Experitest..
También puede interesarle
Appium y los marcos de trabajo móviles modernos: Entendiendo los desafíos de la automatización
La automatización móvil ha madurado significativamente durante la última década, en gran medida…
El mito del bloqueo de la automatización: Migración cuántica sin reescrituras
Mientras hablaba con tantos equipos de control de calidad empresariales como...
Marco de diseño de aplicaciones y mejores prácticas basadas en la automatización
Un concepto que promueve cómo los desarrolladores pueden diseñar sus aplicaciones para…
