Pruebas automatizadas de aplicaciones: uso de Appium

Introducción

Appiumes un marco de automatización de pruebas de código abierto para aplicaciones web nativas, híbridas y móviles.

Instalar

AppiumHay dos métodos de instalación, uno es npminstalar a través de la línea de comando y el otro es instalar la herramienta visual.

  • npmInstalar

    npmEl método de instalación es un poco más problemático. Debe instalarlo antes de poder npmoperarlo. Si desea obtener más información, consulte: Instalación de Appium.

  • Instalación de herramientas visuales

    Las herramientas de visualización se pueden descargar desde Github.

Este artículo utiliza el método de instalación de herramientas visuales.

Configurar y ejecutar

Una vez completada la instalación, iníciela Appium.exey haga clic en Editar configuración.

Insertar descripción de la imagen aquí
En la interfaz de configuración emergente, complete la ruta de la variable de entorno que se configuró previamente y guárdela para reiniciar.

Insertar descripción de la imagen aquí
Después de reiniciar, haga clic en Iniciar servidor

Insertar descripción de la imagen aquí
Haga clic en Iniciar sesión del inspector en la esquina superior derecha

Insertar descripción de la imagen aquí
Insertar descripción de la imagen aquí
Haga clic en el signo "+" en la parte inferior central para agregar parámetros

Capacidad Descripción
nombre de la plataforma Sistema operativo del dispositivo
plataformaVersión Versión del sistema operativo del dispositivo
nombre del dispositivo adb deviesNombre del dispositivo ( el dispositivo actualmente conectado se puede obtener ejecutando adb )
paquete de aplicaciones Nombre del paquete de la aplicación
actividad de la aplicación Nombre de actividad para actividades de Android iniciadas desde appPackage
noReiniciar verdadero o falso, si se deben borrar los datos de la aplicación al ejecutar el programa

Para obtener más capacidades, consulte: Capacidades deseadas de Appium

Complete algunos parámetros de la siguiente manera:

Insertar descripción de la imagen aquí
Después de hacer clic para iniciar la sesión, aparecerá la siguiente ventana:

Insertar descripción de la imagen aquí
AppiumA través de operaciones de grabación, se pueden generar lenguajes que pueden ejecutar programas como JS, Java, Python y Ruby. Las operaciones específicas incluyen: Iniciar la operación → Hacer clic en un botón o cuadro de entrada en la interfaz de la aplicación → Después de hacer clic, la información relevante se mostrará en el elemento seleccionado a la derecha → Seleccione la operación de hacer clic o enviar la clave → Actualizar la captura de pantalla.

Insertar descripción de la imagen aquí
Algunos elementos de selección no se pueden seleccionar y es necesario utilizar coordenadas para localizar la posición en la que se hizo clic. Después de grabar las operaciones relevantes, copie el código generado por la grabación en el portapapeles y péguelo en el método anotado por Android Studiola herramienta de desarrollo .@Test

Insertar descripción de la imagen aquí
runCon un solo clic, se completan los pasos para las pruebas automatizadas de la interfaz de usuario.

Insertar descripción de la imagen aquí
Para ejecutar el código que contiene, se deben introducir tres paquetes jar con anticipación. La dirección de descarga se encuentra al final del artículo Android Studio. Parte del código es el siguiente:commons-lang3java-clientselenium-server-standaloneJava

	@Before
    public void initAppium() {
    
    
        File classpathRoot = new File(System.getProperty("user.dir"));
        // 获取apps文件,前面测试应用所存放的目录
        File appDir = new File(classpathRoot, "/test_app/");
        // 获取apk文件
        File app = new File(appDir, "AppiumAutoTest.apk");
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability("platformName", "测试的设备系统");
        capabilities.setCapability("platformVersion", "系统平台版本号");
        capabilities.setCapability("deviceName", "测试的设备名称");
        capabilities.setCapability("app", app.getAbsolutePath());
        capabilities.setCapability("appPackage", "被测应用包名");
        capabilities.setCapability("appActivity", "app启动的第一个运行界面");
        // 连接appium启动相应app
        try {
    
    
            driver = new AndroidDriver<>(new URL("http://192.168.31.98:4723/wd/hub"), capabilities);
        } catch (MalformedURLException e) {
    
    
            e.printStackTrace();
        }
        System.out.println("App is launched!");
    }

    @Test
    public void startTest() throws InterruptedException {
    
    
        MobileElement el3 = (MobileElement) driver.findElementByAccessibilityId("Reflow");
        el3.click();
        sleep(1000);
        MobileElement el4 = (MobileElement) driver.findElementByAccessibilityId("Slideshow");
        el4.click();
        sleep(1000);
        MobileElement el5 = (MobileElement) driver.findElementByXPath("/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/androidx.drawerlayout.widget.DrawerLayout/android.view.ViewGroup/android.widget.LinearLayout[2]/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.view.ViewGroup");
        el5.click();
        sleep(1000);
        execRootCmdSilent("adb shell input tap 958 1588");
        sleep(1000);
        MobileElement el6 = (MobileElement) driver.findElementByAccessibilityId("更多选项");
        el6.click();
        sleep(1000);
        MobileElement el7 = (MobileElement) driver.findElementById("com.miyue.appiumautotest:id/title");
        el7.click();
        sleep(1000);
        MobileElement el8 = (MobileElement) driver.findElementByAccessibilityId("转到上一层级");
        el8.click();
    }
    
	private void sleep(int second) throws InterruptedException {
    
    
        Thread.sleep(second);
    }

    /**
     * 使用adb命令执行点击的坐标点
     * @param paramString
     */
    public void execRootCmdSilent(String paramString) {
    
    
        String content = "";
        BufferedReader reader = null;
        InputStream is = null;
        try {
    
    
            java.lang.Process process = Runtime.getRuntime().exec(paramString);
            is = process.getInputStream();
            reader = new BufferedReader(new InputStreamReader(is));
            StringBuffer output = new StringBuffer();
            int read;
            char[] buffer = new char[4096];
            while ((read = reader.read(buffer)) > 0) {
    
    
                output.append(buffer, 0, read);
            }
            content = output.toString();
            System.out.println("App execution adb done!" + content);
        } catch (Exception e) {
    
    
            e.printStackTrace();
            System.out.println("App issue!" + e.getMessage());
        } finally {
    
    
            if (null != is) {
    
    
                try {
    
    
                    is.close();
                } catch (Exception e) {
    
    
                    e.printStackTrace();
                }
            }
            if (reader != null) {
    
    
                try {
    
    
                    reader.close();
                } catch (IOException e) {
    
    
                    e.printStackTrace();
                }
            }
        }
    }

    /**
     * 运行完成
     * @throws InterruptedException
     */
    @After
    public void end() throws InterruptedException {
    
    
        // 退出应用
        driver.quit();
    }

Problemas y soluciones

  • No hay tareas disponibles.

    Motivo : No configurado Run/Debug Configurations.

  • Conexión rechazada: conectar.

    Motivo : Appiumel servicio no se inicia.

  • Se produjo un error desconocido en el servidor al procesar el comando. Error original: No se puede encontrar un dispositivo o emulador activo con OS 11. Están disponibles los siguientes: 6HJ4C19A29009173 (10).

    Causa : platformVersion El sistema operativo ingresado no es la versión del sistema operativo al que está conectado.

  • Se produjo un error desconocido en el servidor al procesar el comando. Error original: no se pudo encontrar un dispositivo Android conectado en 20088 ms.

    Motivo : no está conectado al dispositivo de prueba, necesita usar adb o un cable de datos para conectarse al dispositivo, ejecutar el comando adb adb devicespara ver el dispositivo actualmente conectado y copiar y pegar el nombre del dispositivo en deviceName.

  • Vuelva a codificar los pasos de prueba y cleanel caché debe ejecutarse con anticipación.

Ventajas desventajas

ventaja

  • Admite aplicaciones de terceros.
  • Admite probar varios dispositivos al mismo tiempo.
  • Admite la generación de código de prueba en varios idiomas.
  • No es necesario compilar código de terceros en la aplicación.
  • Libera tus manos y evita operaciones repetidas innecesarias.
  • Admite aplicaciones para IOS, Android y Windows.
  • 支持Aplicaciones nativas, aplicaciones híbridas, aplicaciones web.

defecto

  • Actualmente no se admite el código Kotlin que se puede utilizar para escribir programas de Android.
  • En comparación con las pruebas manuales, las pruebas automáticas de Appium no son adecuadas para pruebas a pequeña escala.

Resumir

Oh, creo que tus puntos de vista se actualizarán después de que lo experimentes Appium.

Si la aplicación bajo prueba no requiere múltiples pruebas repetitivas de UI, no parece haber necesidad de usar Appiumpruebas automatizadas. En comparación con las pruebas de UI de clic manual, la velocidad no parece ser ni un poco más lenta.

Recientemente aprendí sobre algo llamado AccessibilityService(Servicio de Accesibilidad), que se puede utilizar para desarrollar scripts de aplicaciones y la velocidad de ejecución del script es extremadamente rápida. Es una pena que no sea un marco de prueba automatizado; de lo contrario, sería muy bueno para las pruebas automatizadas.

Android StudioDirección de descarga de código para este artículo : Dirección de descarga de código para pruebas automatizadas de Appium

Referencias

1. Sitio web oficial de Appium
2. Dirección de descarga de Appium
3. Dirección de descarga del paquete java-client.jar
4. Dirección de descarga del paquete commons-lang3.jar
5. Appium crea un marco de prueba automatizado de Android
6. Dirección de descarga del paquete selenium-server-standalone.jar

Supongo que te gusta

Origin blog.csdn.net/baidu_41616022/article/details/126983066
Recomendado
Clasificación