Tabla de contenido
Introducción
Appium
es un marco de automatización de pruebas de código abierto para aplicaciones web nativas, híbridas y móviles.
Instalar
Appium
Hay dos métodos de instalación, uno es npm
instalar a través de la línea de comando y el otro es instalar la herramienta visual.
-
npm
Instalarnpm
El método de instalación es un poco más problemático. Debe instalarlo antes de podernpm
operarlo. 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.exe
y haga clic en Editar configuración.
En la interfaz de configuración emergente, complete la ruta de la variable de entorno que se configuró previamente y guárdela para reiniciar.
Después de reiniciar, haga clic en Iniciar servidor
Haga clic en Iniciar sesión del inspector en la esquina superior derecha
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 devies Nombre 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:
Después de hacer clic para iniciar la sesión, aparecerá la siguiente ventana:
Appium
A 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.
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 Studio
la herramienta de desarrollo .@Test
run
Con un solo clic, se completan los pasos para las pruebas automatizadas de la interfaz de usuario.
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-lang3
java-client
selenium-server-standalone
Java
@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 :
Appium
el 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 devices
para ver el dispositivo actualmente conectado y copiar y pegar el nombre del dispositivo endeviceName
. -
Vuelva a codificar los pasos de prueba y
clean
el 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 Appium
pruebas 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 Studio
Direcció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