Estos son los enlaces del lenguaje Java para escribir pruebas de Appium que se ajusten al protocolo WebDriver.
Desde la versión 9, el cliente solo admite Java 11 y versiones posteriores. Siga la Guía de migración de v8 a v9 para agilizar el proceso de migración.
Desde la versión 8, Appium Java Client tuvo varios cambios importantes, que pueden requerir la actualización del código de su cliente. Asegúrese de seguir la Guía de migración de v7 a v8 para agilizar el proceso de migración.
Agregue lo siguiente a pom.xml:
< dependency >
< groupId >io.appium groupId >
< artifactId >java-client artifactId >
< version >${version.you.require} version >
< scope >test scope >
dependency >
Agregue lo siguiente a build.gradle:
dependencies {
testImplementation ' io.appium:java-client:${version.you.require} '
}
El proyecto de cliente Java está disponible para su uso incluso antes de que se publique oficialmente en Maven Central. Consulte jitpack.io
Agregue lo siguiente a pom.xml:
< repositories >
< repository >
< id >jitpack.io id >
< url >https://jitpack.io url >
repository >
repositories >
Agregue la dependencia:
< dependency >
< groupId >com.github.appium groupId >
< artifactId >java-client artifactId >
< version >latest commit ID from master branch version >
dependency >
Agregue el repositorio JitPack a su archivo de compilación. Agréguelo a su build.gradle raíz al final de los repositorios:
allprojects {
repositories {
// ...
maven { url ' https://jitpack.io ' }
}
}
Agregue la dependencia:
dependencies {
implementation ' com.github.appium:java-client:latest commit id from master branch '
}
Cliente Java de Appium | Cliente de selenio |
---|---|
9.2.1 (problemas conocidos: #2145, #2146), 9.2.2 , 9.2.3 , 9.3.0 | 4.19.0 , 4.19.1 , 4.20.0 , 4.21.0 , 4.22.0 , 4.23.0 |
9.1.0 , 9.2.0 | 4.17.0 , 4.18.0 , 4.18.1 |
9.0.0 | 4.14.1 , 4.15.0 , 4.16.0 (parcialmente dañado), 4.16.1 |
N / A | 4.14.0 |
8.5.0 , 8.5.1 , 8.6.0 | 4.9.1 , 4.10.0 , 4.11.0 , 4.12.0 , 4.12.1 (problema conocido: #2004), 4.13.0 |
8.4.0 | 4.8.2 , 4.8.3 , 4.9.0 |
8.3.0 | 4.7.0 , 4.7.1 , 4.7.2 , 4.8.0 , 4.8.1 |
8.2.1 | 4.5.0 , 4.5.1 , 4.5.2 , 4.5.3 , 4.6.0 |
El cliente Selenium no sigue el control de versiones semántico, por lo que se pueden introducir cambios importantes incluso en los parches, lo que requiere que el equipo de Appium actualice el cliente Java en respuesta.
Appium Java Client declara dependencias de Selenium utilizando un rango de versiones abierto que se maneja de manera diferente mediante diferentes herramientas de compilación. A veces, es posible que los usuarios quieran anclar las dependencias de Selenium usadas por varias razones. Siga el artículo Gestión de dependencias transitivas para obtener más información sobre cómo establecer una versión fija de Selenium para su marco de prueba de Java.
El cliente Java de Appium tiene clases dedicadas para admitir los siguientes controladores de Appium:
Para automatizar otras plataformas que no figuran en la lista anterior, puede utilizar AppiumDriver o sus derivados personalizados.
El cliente Appium Java está construido sobre Selenium e implementa las mismas interfaces que la base RemoteWebDriver. Sin embargo, Selenium lib se centra principalmente en la automatización del navegador web, mientras que Appium es universal y cubre una amplia gama de plataformas posibles, por ejemplo, sistemas operativos móviles y de escritorio, dispositivos IoT, etc. Por lo tanto, la clase básica AppiumDriver
en este paquete amplía RemoteWebDriver
con características adicionales. y lo hace más flexible, por lo que no se centra tan estrictamente en operaciones relacionadas con el navegador web.
El cliente Java de Appium proporciona una clase dedicada para controlar la ejecución del servidor Appium. La clase es AppiumDriverLocalService. Permite ejecutar y verificar el servidor Appium localmente desde el código del marco de prueba y proporciona varios atajos convenientes. El servicio podría utilizarse de la siguiente manera:
AppiumDriverLocalService service = AppiumDriverLocalService . buildDefaultService ();
service . start ();
try {
// do stuff with drivers
} finally {
service . stop ();
}
Puede personalizar el comportamiento del servicio, por ejemplo, proporcionar argumentos de línea de comando personalizados o cambiar las rutas a los ejecutables del servidor usando AppiumServiceBuilder.
Nota
AppiumDriverLocalService no admite la administración de servidores en hosts no locales
UiAutomator2Options options = new UiAutomator2Options ()
. setUdid ( "123456" )
. setApp ( "/home/myapp.apk" );
AndroidDriver driver = new AndroidDriver (
// The default URL in Appium 1 is http://127.0.0.1:4723/wd/hub
new URL ( "http://127.0.0.1:4723" ), options
);
try {
WebElement el = driver . findElement ( AppiumBy . xpath ( "//Button" ));
el . click ();
driver . getPageSource ();
} finally {
driver . quit ();
}
XCUITestOptions options = new XCUITestOptions ()
. setUdid ( "123456" )
. setApp ( "/home/myapp.ipa" );
IOSDriver driver = new IOSDriver (
// The default URL in Appium 1 is http://127.0.0.1:4723/wd/hub
new URL ( "http://127.0.0.1:4723" ), options
);
try {
WebElement el = driver . findElement ( AppiumBy . accessibilityId ( "myId" ));
el . click ();
driver . getPageSource ();
} finally {
driver . quit ();
}
BaseOptions options = new BaseOptions ()
. setPlatformName ( "myplatform" )
. setAutomationName ( "mydriver" )
. amend ( "mycapability1" , "capvalue1" )
. amend ( "mycapability2" , "capvalue2" );
AppiumDriver driver = new AppiumDriver (
// The default URL in Appium 1 is http://127.0.0.1:4723/wd/hub
new URL ( "http://127.0.0.1:4723" ), options
);
try {
WebElement el = driver . findElement ( AppiumBy . className ( "myClass" ));
el . click ();
driver . getPageSource ();
} finally {
driver . quit ();
}
Consulte los archivos README del controlador correspondiente para conocer la lista de capacidades y características que admite.
Puede encontrar muchos más ejemplos de código consultando las pruebas unitarias y de integración del cliente.
El cliente Appium Java utiliza acceso reflexivo a miembros privados de otros módulos para garantizar la funcionalidad adecuada de varias funciones, como el modelo de objetos de página. Si obtiene una excepción de tiempo de ejecución e InaccessibleObjectException
está presente en el seguimiento de la pila y su tiempo de ejecución de Java es de la versión 16 o superior, considere el siguiente tutorial de Oracle y/o verifique los problemas existentes para posibles soluciones. La idea sería permitir explícitamente el acceso a módulos particulares usando argumentos de línea de comando --add-exports/--add-opens
.
Otra solución posible, aunque poco recomendable, sería degradar Java a la versión 15 o inferior.
Estos problemas suelen ocurrir cuando el servidor Appium se inicia directamente desde el código de su marco en lugar de ejecutarlo por separado mediante un script o manualmente. Dependiendo de la forma en que se inicia el proceso del servidor, puede heredar o no el entorno de shell actualmente activo. Es por eso que aún puede recibir errores sobre la presencia de las variables aunque estas variables estén definidas para su intérprete de línea de comando. Una vez más, no existe una solución universal para esto, ya que hay muchas formas de poner en marcha un nuevo proceso de servidor. Considere consultar el documento de solución de problemas del entorno de Appium para obtener más información sobre cómo depurar y solucionar problemas del entorno de procesos.
Visite CHANGELOG.md para ver la lista completa de cambios entre versiones.
Ejecute una prueba usando
gradle clean -Dtest.single=Prueba IOSAlertTest