Dans cet article, je souhaite partager mon expérience dans la résolution du problème du lancement de tests automatisés d'une application mobile sur Android.
Ce que je vais raconter:
- Comment exécuter un environnement de test automatisé à l'aide d'Appium
(PC OS - Windows 10) - Comment éviter certaines erreurs qui se produisent lorsque vous essayez d'exécuter des tests dans une application hybride
- Quelques commandes de base pour exécuter les tests les plus simples. Nous utiliserons Java et JavaScript
Défi
Automatisez le test des applications mobiles hybrides.
A propos de l'application à tester:
Ce sont peut-être les points clés qui ont influencé la configuration du PC pour exécuter les tests.
Environnement de test
Nous utiliserons Appium comme outil de test automatisé.
En bref, c'est un outil qui vous permet d'utiliser le serveur pour envoyer des commandes au client quoi faire et pourquoi.
Vous pouvez obtenir des informations complètes sur le site Web
du développeur .
Commençons.
Dans un endroit qui vous convient sur le disque, créez le dossier «Appium automation».
Par exemple:
C:\Appium automation
Plus loin dans ce dossier (C: \ Appium automation) créez quelques autres dossiers:
Si l'une des applications / composants que vous avez installés, en suivant les instructions, vous comprenez simplement la logique de la relation, c'est-à-dire il n'est pas nécessaire de tout réinstaller.
Remplir les dossiers créés et charger d'autres composants
1. Java SDK
Suivez le lien et cliquez sur Télécharger:

Ensuite, nous arrivons à la page de téléchargement pour différents systèmes d'exploitation, comme J'ai Windows 10 x64, sélectionnez:

Après avoir téléchargé le fichier, ouvrez-le et décompressez le .exe-shnik (sélectionnez le chemin lors de l'installation) dans le dossier:
C:\Program Files\Java\jdk-12.0.1
(le numéro de version au moment du téléchargement peut varier)2. Android Studio et SDK Android
Pour télécharger,
suivez le lien .
Installez dans le dossier:
C:\Appium automation\Android Studio
Lors du premier lancement d'Android Studio, vous devrez
configurer le programme :
- Type d'installation sélectionnez Personnalisé, cliquez sur Suivant
- Choisissez un thème que vous aimez, cliquez sur Suivant
- Emplacement du SDK Android, spécifiez C: \ Appium automation \ SDK Android, cliquez sur Suivant
- Les paramètres de l'émulateur peuvent être laissés sur Recommandé, cliquez sur Suivant
- Cliquez sur Terminer et attendez la fin du processus d'installation.
Créez un nouveau projet dans Android Studio:- Cliquez sur Démarrer un nouveau projet Android Studio
- Indiquez le nom, le chemin d'accès à votre projet, ou vous ne pouvez rien changer et laisser celui proposé, cliquez sur Suivant
- Dans la liste déroulante Téléphone et tablette, sélectionnez «API 23: Android 6.0 (Marshmallow), cliquez sur Suivant
- Choisissez l'activité vide, cliquez sur Suivant
- Cliquez sur Suivant
- Cliquez sur Terminer
Installer les outils du SDKDans Android Studio, sélectionnez Outils - Gestionnaire de SDK.
Dans la fenêtre qui apparaît, la section SDK Android sera sélectionnée.

Dans l'onglet Plateformes SDK, sélectionnez la version d'Android sur laquelle vous effectuerez les tests.
Et, dans les outils du SDK, sélectionnez les éléments:
- Outils de construction du SDK Android
- Émulateur Android
- Android SDK Platform-Tools
- Outils SDK Android
- Documentation pour Android SDK
- Référentiel de support
Cliquez sur Appliquer ou sur OK et attendez la fin du téléchargement et de l'installation des composants.

3. Créez des variables PATH
Faites un clic droit sur «Poste de travail» - «Propriétés» - «Paramètres système avancés».
Dans la fenêtre qui s'ouvre, sur l'onglet «Avancé», sélectionnez «Variables d'environnement ...»
Dans le bloc "Variables système", créez une nouvelle variable.

Première variableNom de variable - JAVA_HOME
La valeur de la variable est
C:\Program Files\Java\jdk-12.0.1
(le chemin où vous avez installé jdk à l'étape 1, dans certains cas, il se peut que le dossier Program Files soit appelé Program Files (x86))
Deuxième variableNom de variable - ANDROID_HOME
La valeur de la variable est
C:\Appium automation\Android SDK
Addition de variable de cheminRecherchez la variable Path dans la liste des variables système et cliquez sur «Modifier ...».
Cliquez sur "Créer" dans la fenêtre qui apparaît et ajoutez les variables:
- % ANDROID_HOME% \ émulateur
- % ANDROID_HOME% \ platform-tools
- % ANDROID_HOME% \ tools
- % ANDROID_HOME% \ tools \ bin
Par conséquent, vous devriez obtenir 4 nouvelles variables, après quoi vous devez cliquer sur OK.

4. Appium
Télécharger Appium:- Nous suivons le lien http://appium.io/
- Cliquez sur Télécharger
- Nous sélectionnons Appium-windows-1.13.0.exe (le numéro de version au moment du chargement peut varier)

Exécutez le fichier .exe téléchargé et installez Appium sur votre PC. Pendant le processus d'installation, vous n'aurez qu'à choisir d'installer globalement ou à un utilisateur spécifique. J'ai installé globalement depuis cela ne m'importe pas.
Téléchargement des bibliothèques Appium:
Déplacez le fichier .jar téléchargé dans le dossier
C:\Appium automation\Appium Lib

Déplacez le fichier .jar téléchargé dans le dossier:
C:\Appium automation\Appium Lib

Déplacez le fichier .jar téléchargé dans le dossier:
C:\Appium automation\Appium Lib
Téléchargez les bibliothèques Selenium:
Décompressez l'archive téléchargée dans le dossier:
C:\Appium automation\Selenium Lib
5. IntelliJ IDEA Community Edition
Pour télécharger, allez sur le lien
https://www.jetbrains.com/idea/downloadPrès de la version communautaire et cliquez sur Télécharger (il s'agit d'une version gratuite, mais elle suffit pour les tests automatiques).
La page de téléchargement présente une comparaison des versions communautaire et ultime.
Si vous souhaitez acheter la version Ultimate, vous pouvez le faire en toute sécurité! Mais, encore une fois, la version communautaire suffira.
Exécutez le fichier .exe téléchargé et installez (cliquez simplement sur Suivant jusqu'à ce que le programme commence à installer)
Premier lancement d'IntelliJ IDEA- Sélectionnez «Ne pas importer les paramètres»
- Nous acceptons l'accord de licence
- Choisissez un sujet
- Cliquez sur Suivant
- Cliquez sur Commencer à utiliser IntelliJ IDEA
Création d'un projet dans IntelliJ IDEA- Choisissez Créer un nouveau projet
- Spécifiez le chemin d'accès au SDK Java
- Cliquez sur Nouveau ...
- Spécifiez le chemin d'accès au SDK Java précédemment chargé C: \ Program Files \ Java \ jdk-12.0.1
- Cliquez sur Suivant
- Cochez la case «Créer un projet à partir d'un modèle»
- Cliquez sur Suivant
- Spécifiez le nom et l'emplacement du projet à enregistrer
- Cliquez sur Terminer
Paramètres du projet crééChoisissez Fichier - Structure du projet ...
Dans la fenêtre qui apparaît, sélectionnez Modules - Dépendances - «+» - JAR ou répertoires ...

Et nous ajoutons au projet toutes les bibliothèques précédemment chargées.

Cliquez OK.
Le projet est maintenant prêt à exécuter des tests.
6. Configuration de l'appareil Android
Appareil réelVous avez besoin d'un câble USB pour connecter l'appareil à l'ordinateur et au smartphone lui-même.
Pour commencer, allez dans «Paramètres» - «À propos du téléphone» dans le smartphone.
De plus, sur différents smartphones, tout est différent, mais en fin de compte, vous devez trouver le «numéro de série» et cliquer dessus 5-7 fois jusqu'à ce que le grille-pain apparaisse «vous êtes maintenant un développeur» (le texte de la notification peut différer d'un modèle à l'autre)
Après cette manipulation, la section «Pour les développeurs» apparaîtra dans les paramètres de votre téléphone. Il peut également se cacher d'un modèle à l'autre dans différentes sections, par exemple, quelque part il sera dans "Paramètres" - "Pour les développeurs", et quelque part "Paramètres" - "Fonctions spéciales" - "Pour les développeurs", etc. .
Vous devez aller dans la section «Pour les développeurs» et activer «Débogage USB».
Lorsque vous connectez votre smartphone via USB, vous verrez un message sur l'autorisation de débogage USB, vous pouvez cocher «Faire confiance à cet appareil» et cliquer sur «OK», puis ce message n'apparaîtra plus la prochaine fois que le téléphone sera connecté à ce PC.
Tout votre smartphone est prêt à fonctionner dans des tests automatiques.
Appareil virtuelVous pouvez également créer un appareil virtuel via Android Studio, vous n'aurez alors pas besoin de connecter l'appareil réel à l'ordinateur.
Mais sur un appareil virtuel, les tests peuvent fonctionner plus lentement que sur un appareil réel.
Pour le créer, ouvrez Android Studio, puis:
- "Outils" - "Gestionnaire AVD" - "+ Créer un périphérique virtuel ..."
- Choisissez un appareil, cliquez sur Suivant
- Choisissez la version souhaitée d'Android, cliquez sur Suivant
- Spécifiez le nom du périphérique, cliquez sur Terminer
Après les manipulations effectuées dans la section "Outils" - "AVD Manager", vous verrez le périphérique créé. À l'aide de l'icône verte «Lecture», vous pouvez démarrer l'appareil.
Comment vérifier que votre PC a vu l'appareil connecté?Exécutez la ligne de commande ("Démarrer" - "Utilitaires - Windows" - "Invite de commandes")
Et entrez la commande adb devices.
Par conséquent, si l'appareil est connecté avec la fonction «Débogage USB» activée, vous recevrez l'appareil connecté et son UDID (numéro de série):
List of devices attached UDID device
7. Nous écrivons un projet
Ajoutez l'importation. package name; import java.util.*; import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.android.AndroidElement; import io.appium.java_client.remote.MobileCapabilityType; import org.openqa.selenium.*; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.JavascriptExecutor; import java.net.MalformedURLException; import java.net.URL; import java.util.concurrent.TimeUnit;
Nous enregistrons le serveur et où il devra envoyer des demandesInstallez le pilote Android:
AndroidDriver<AndroidElement> driver = null;
Nous définissons les paramètres (propriétés):
DesiredCapabilities capabilities = new DesiredCapabilities();
Le nom de l'appareil (vous pouvez le trouver pour le vrai appareil dans "Paramètres" - "À propos du téléphone", et pour les "Outils" virtuels - "AVD Manager" - le champ "Nom"):
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "MyPhone");
Lien vers l'APK qui devra être lancé (.apk doit être une version de débogage pour que vous et appium puissiez inspecter les applications):
capabilities.setCapability(MobileCapabilityType.APP, "C:\\Appium automation\\APK\\My-debug-Apk.apk");
Lancez le pilote Appium:
try { driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); } catch (MalformedURLException e) { System.out.println(e.getMessage()); }
Ce code sera suffisant pour lancer votre application sur l'appareil connecté.
Équipes supplémentairesAfin de suspendre le projet pendant un certain temps, par exemple 8 secondes. (la valeur est indiquée en millisecondes). Il peut être nécessaire si vous devez attendre le chargement de la page ou de l'application:
Thread.sleep(8000);
Nous obtenons ContextHandles, où nous comprenons ce avec quoi nous travaillons actuellement (NATIVE_APP ou WEBVIEW):
Set<String> contextNames = driver.getContextHandles(); for (String contextName : contextNames) { System.out.println(contextName); }
Affectez le contexte à la dernière valeur reçue dans le tableau. Cela vous permettra de passer correctement à WEBVIEW, tk. Contexte par défaut = NATIVE_APP:
driver.context((String) contextNames.toArray()[contextNames.toArray().length - 1]);
Nous contrôlons l'interface de l'applicationParce que nous travaillons avec une application hybride, c'est-à-dire les éléments d'application sont rendus dans WEBVIEW, et non dans NATIVE_APP, alors le plus souvent nous devrons utiliser un type de recherche pour l'élément findElementByCssSelector.
Cliquez sur le bouton OK:
driver.findElementByCssSelector(".button-ok").click();
- où .button-ok est la classe d'élément. Vous pouvez également utiliser l'ID d'élément exactement.
Nous envoyons la valeur dans le champ, par exemple, vous avez une recherche et vous souhaitez y envoyer la valeur «Cinéma».
driver.findElementByCssSelector(".search-input").sendKeys("");
Cliquez pour trouver:
driver.findElementByCssSelector(".search-button").click();
De cette façon, vous pouvez déjà contrôler votre application.
Tôt ou tard, vous rencontrerez cela, tout le contenu n'est pas placé sur l'écran du smartphone, c'est-à-dire vous devez faire défiler. Si un élément n'est pas visible à l'écran pendant le processus de test, Appium affichera une erreur indiquant qu'il ne voit pas l'élément et très probablement tous les tests ultérieurs seront couverts d'erreurs.
Pour faire défiler l'écran, vous pouvez exécuter la fonction JS scrollIntoView en Java.
((JavascriptExecutor) driver).executeScript("document.querySelector('.button-ok').scrollIntoView({block: \"end\", behavior: \"smooth\"});");
Dans mon cas, cela vous permettra de descendre jusqu'au bouton OK.
Il se peut que vous ayez tout écrit correctement, mais le défilement n'est pas effectué.
Essayez de vous lier à d'autres éléments sur l'écran et d'abord il est préférable de le faire via la console dans Chrome - Inspect, afin que vous soyez assuré de comprendre que lorsque vous vous liez à cet élément, le défilement fonctionnera.
Vous pouvez passer à l'étape 8 et si tout fonctionne pour vous, c'est parfait!
Mais j'ai eu un autre écueil.
Son nom est Crosswalk Browser.
Quand j'ai commencé le projet, j'ai constamment eu une erreur:
“Make sure the app has its webview configured for debugging”
Cela signifie qu'aucun test n'a été effectué.
Ce que vous devez vérifier dans ce cas:
- assurez-vous d'avoir une version de débogage
- assurez-vous que la version de débogage autorise l'application Inspect-a
- installer un chromedriver fixe
Après ces manipulations, ajoutez une autre fonctionnalité à votre projet.
capabilities.setCapability("chromedriverExecutable", "C:\\node_modules\\appium-with-crosswalk-fix\\chromedriver\\2.28\\chromedriver.exe");
- où C: \\ node_modules \\ appium-with-crosswalk-fix \\ chromedriver \\ 2.28 \\ chromedriver.exe
c'est le chemin vers chromedriver fixe
Votre projet ressemblera donc à ceci: package name; import java.util.*; import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.android.AndroidElement; import io.appium.java_client.remote.MobileCapabilityType; import org.openqa.selenium.*; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.JavascriptExecutor; import java.net.MalformedURLException; import java.net.URL; import java.util.concurrent.TimeUnit; public class Main { public static void main(String[] args) throws InterruptedException { AndroidDriver<AndroidElement> driver = null; DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "MyPhone"); capabilities.setCapability(MobileCapabilityType.APP, "C:\\Appium automation\\APK\\My-debug-apk.apk"); capabilities.setCapability("chromedriverExecutable", "C:\\node_modules\\appium-with-crosswalk-fix\\chromedriver\\2.28\\chromedriver.exe"); try { driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); } catch (MalformedURLException e) { System.out.println(e.getMessage()); } Set<String> contextNames = driver.getContextHandles(); for (String contextName : contextNames) { System.out.println(contextName); } driver.context((String) contextNames.toArray()[contextNames.toArray().length - 1]); Thread.sleep(8000); driver.findElementByCssSelector(".search-input").sendKeys(""); driver.findElementByCssSelector(".search-button").click(); }
Un tel projet:
- Installez votre application sur l'appareil.
- Trouvez le champ de recherche sur la page de candidature
- Apportera là le sens de «Cinéma»
- Cliquez sur le bouton «Rechercher»
8. Nous commençons le projet
Il y a plusieurs points principaux pour démarrer un projet:
- Lancer le serveur Appium (élément 4)
- Utilisez le raccourci pour lancer Appium
- Cliquez sur «Démarrer le serveur»
- Connectez l'appareil à un PC ou lancez un appareil virtuel (élément 6)
- Configurer un projet (p. 5 et p. 7)
- Cliquez sur Exécuter (ou sur la barre d'outils IntelliJ IDEA, ou Exécuter - Exécuter 'Principal')
- Profitez du résultat
Eh bien, alors vous êtes libre de tester les paramètres, les informations nécessaires sont sur le site officiel du
développeur .
Appium peut également être utilisé pour tester des applications iOS.
Je voulais écrire brièvement, mais cela s'est avéré comme toujours.
Merci à tous ceux qui ont lu jusqu'au bout, j'espère que cela vous a été utile!