Il s'agit des liaisons du langage Java pour l'écriture de tests Appium conformes au protocole WebDriver.
Depuis la v9, le client ne prend en charge que Java 11 et supérieur. Suivez le guide de migration v8 vers v9 pour rationaliser le processus de migration.
Depuis la version 8, Appium Java Client a subi plusieurs modifications majeures, qui peuvent nécessiter la mise à jour de votre code client. Assurez-vous de suivre le guide de migration v7 vers v8 pour rationaliser le processus de migration.
Ajoutez ce qui suit à pom.xml :
< dependency >
< groupId >io.appium</ groupId >
< artifactId >java-client</ artifactId >
< version >${version.you.require}</ version >
< scope >test</ scope >
</ dependency >
Ajoutez ce qui suit à build.gradle :
dependencies {
testImplementation ' io.appium:java-client:${version.you.require} '
}
Le projet client Java est disponible avant même sa publication officielle sur Maven Central. Référez-vous à jitpack.io
Ajoutez ce qui suit à pom.xml :
< repositories >
< repository >
< id >jitpack.io</ id >
< url >https://jitpack.io</ url >
</ repository >
</ repositories >
Ajoutez la dépendance :
< dependency >
< groupId >com.github.appium</ groupId >
< artifactId >java-client</ artifactId >
< version >latest commit ID from master branch</ version >
</ dependency >
Ajoutez le référentiel JitPack à votre fichier de build. Ajoutez-le à votre racine build.gradle à la fin des référentiels :
allprojects {
repositories {
// ...
maven { url ' https://jitpack.io ' }
}
}
Ajoutez la dépendance :
dependencies {
implementation ' com.github.appium:java-client:latest commit id from master branch '
}
Client Java Appium | Client Sélénium |
---|---|
9.2.1 (problèmes connus : #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 (partiellement corrompu), 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 (problème connu : #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 |
Le client Selenium ne suit pas le gestion des versions sémantiques, de sorte que des modifications importantes peuvent être introduites même dans les correctifs, ce qui oblige l'équipe Appium à mettre à jour le client Java en réponse.
Le client Appium Java déclare les dépendances Selenium à l'aide d'une plage de versions ouvertes qui est gérée différemment par différents outils de construction. Parfois, les utilisateurs peuvent souhaiter épingler les dépendances Selenium utilisées pour diverses raisons. Suivez l'article Gestion des dépendances transitives pour plus d'informations sur l'établissement d'une version fixe de Selenium pour votre infrastructure de test Java.
Le client Java Appium dispose de classes dédiées pour prendre en charge les pilotes Appium suivants :
Pour automatiser d'autres plates-formes non répertoriées ci-dessus, vous pouvez utiliser AppiumDriver ou ses dérivés personnalisés.
Le client Java Appium est construit sur Selenium et implémente les mêmes interfaces que la fondation RemoteWebDriver. Cependant, la bibliothèque Selenium se concentre principalement sur l'automatisation du navigateur Web, tandis qu'Appium est universelle et couvre un large éventail de plates-formes possibles, par exemple les systèmes d'exploitation mobiles et de bureau, les appareils IOT, etc. Ainsi, la classe de base AppiumDriver
de ce package étend RemoteWebDriver
avec des fonctionnalités supplémentaires. , et le rend plus flexible, de sorte qu'il n'est pas aussi strictement axé sur les opérations liées au navigateur Web.
Le client Java Appium fournit une classe dédiée pour contrôler l'exécution du serveur Appium. La classe est AppiumDriverLocalService. Il permet d'exécuter et de vérifier le serveur Appium localement à partir du code de votre framework de test et fournit plusieurs raccourcis pratiques. Le service peut être utilisé comme ci-dessous :
AppiumDriverLocalService service = AppiumDriverLocalService . buildDefaultService ();
service . start ();
try {
// do stuff with drivers
} finally {
service . stop ();
}
Vous pouvez personnaliser le comportement du service, par exemple, fournir des arguments de ligne de commande personnalisés ou modifier les chemins d'accès aux exécutables du serveur à l'aide d'AppiumServiceBuilder.
Note
AppiumDriverLocalService ne prend pas en charge la gestion de serveur sur des hôtes non locaux
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 ();
}
Consultez les README du pilote correspondant pour connaître la liste des capacités et fonctionnalités qu'il prend en charge.
Vous pouvez trouver de nombreux autres exemples de code en vérifiant les tests unitaires et d'intégration du client.
Le client Appium Java utilise un accès réfléchissant aux membres privés d'autres modules pour garantir le bon fonctionnement de plusieurs fonctionnalités, comme le modèle Page Object. Si vous obtenez une exception d'exécution et InaccessibleObjectException
est présente dans la trace de la pile et que votre environnement d'exécution Java est à la version 16 ou supérieure, consultez le didacticiel Oracle suivant et/ou vérifiez les problèmes existants pour trouver des solutions possibles. L'idée serait d'autoriser explicitement l'accès à des modules particuliers en utilisant les arguments de ligne de commande --add-exports/--add-opens
.
Une autre solution possible, mais peu conseillée, serait de rétrograder Java vers la version 15 ou inférieure.
De tels problèmes se produisent généralement lorsque le serveur Appium est démarré directement à partir de votre code framework plutôt que d'être exécuté séparément par un script ou manuellement. Selon la manière dont le processus serveur est démarré, il peut ou non hériter de l'environnement shell actuellement actif. C'est pourquoi vous pouvez toujours recevoir des erreurs concernant la présence des variables même si ces variables sont définies pour votre interpréteur de ligne de commande. Encore une fois, il n’existe pas de solution universelle à ce problème, car il existe de nombreuses façons de lancer un nouveau processus serveur. Pensez à consulter le document de dépannage de l'environnement Appium pour plus d'informations sur la façon de déboguer et de résoudre les problèmes d'environnement de processus.
Visitez CHANGELOG.md pour voir la liste complète des modifications entre les versions.
Exécutez un test en utilisant
gradle clean -Dtest.single=Test IOSAlertTest