
Blog ⋅ Docs ⋅ GROPT GROPT ⋅ bulletin ⋅ Certifications ⋅ YouTube
Appium est un outil pour automatiser les applications natives, Web mobiles et hybrides sur les plates-formes iOS, Android et Windows. Il prend en charge les applications natives iOS écrites dans OBJECTIVE-C ou SWIFT et Android Native Apps écrit en Java ou Kotlin. Il prend également en charge les applications Web mobiles accessibles à l'aide d'un navigateur mobile (Appium prend en charge Safari sur iOS et Chrome ou l'application «Browser» intégrée sur Android). Effectuez des tests d'automatisation Appium sur le cloud en ligne de Lambdatest.
Astuce: si vous n'avez pas de fichier .apk ou .ipa , vous pouvez exécuter vos exemples de tests sur lambdatest en utilisant notre échantillon? Application Android ou échantillon? Application iOS.
Voici une liste de langues et de cadres qui sont pris en charge par le Lambdatest pour exécuter des tests d'automatisation Appium sur la plate-forme cloud de périphérique réelle Lambdatest.
| Java | Php | Rubis | C # | Python | Javascrip |
|---|---|---|---|---|---|
| Junite | Php | Concombre | C # | Se comporter | Webdriverio |
| Robot |
Nous prenons en charge toutes les langues et cadres compatibles avec Appium, donc au cas où votre favori n'est pas dans le tableau. Ne vous inquiétez pas, vous pouvez toujours exécuter le test. Contactez-nous pour toute aide.
Remarque: nous préparons la documentation pour plus de cadres. Si vous voulez que nous priorisons la documentation de votre cadre préféré, n'hésitez pas à nous faire crier .
Téléchargez votre application iOS (Fichier .IPA) ou l'application Android (fichier .apk) sur les serveurs Lambdatest à l'aide de notre API REST . Vous devez fournir votre nom d'utilisateur et AccessKey dans le Username:AccessKey dans la commande curl pour l'authentification. Assurez-vous d'ajouter le chemin d'accès de l' Appfile dans la demande de curl. Voici un exemple de demande de curl pour télécharger votre application à l'aide de notre API REST:
Pour macOS / Linux:
curl - u "{username}:{accesskey}"
-- location -- request POST 'https: //manual-api.lambdatest.com/app/upload/realDevice'
-- form 'name="Android_App"'
-- form 'appFile=@"/Users/{desktop_username}/Desktop/LT_Java_Appium/proverbial_android.apk"'Pour Windows:
curl - u "{username}:{accesskey}" - X POST "https://manual-api.lambdatest.com/app/upload/realDevice" - F "appFile=@" / Users / Desktop_username / Desktop / LT_Java_Appium / proverbial_android . apk ""Utilisation de l'URL de l'application:
Pour macOS / Linux:
curl - u "${ YOUR_LAMBDATEST_USERNAME()}:${ YOUR_LAMBDATEST_ACCESS_KEY()}"
-- location -- request POST 'https: //manual-api.lambdatest.com/app/upload/realDevice'
-- form 'name="Android_App"'
-- form 'url="https://prod-mobile-artefacts.lambdatest.com/assets/docs/proverbial_android.apk"'Pour Windows:
curl - u "${ YOUR_LAMBDATEST_USERNAME()}:${ YOUR_LAMBDATEST_ACCESS_KEY()}"
- X POST "https://manual-api.lambdatest.com/app/upload/realDevice"
- d "{"url":"https://prod-mobile-artefacts.lambdatest.com/assets/docs/proverbial_android.apk",
"name":"sample.apk"'Remarque d'information:
La réponse de Curl ci-dessus sera un objet JSON contenant l' App URL du format - lt: // app123456789123456789 et sera utilisé à l'étape suivante.
Voici un exemple de script d'automatisation en Java pour l'exemple d'application téléchargée ci-dessus. Assurez-vous de mettre à jour app_url , username et accesskey dans le code ci-dessous.
import io . appium . java_client . AppiumDriver ;
import io . appium . java_client . MobileBy ;
import io . appium . java_client . MobileElement ;
import io . appium . java_client . android . AndroidElement ;
import org . openqa . selenium . remote . DesiredCapabilities ;
import org . openqa . selenium . support . ui . ExpectedConditions ;
import org . openqa . selenium . support . ui . WebDriverWait ;
import java . net . URL ;
import java . util . List ;
public class AndroidApp {
public static String userName = "username" ; //Enter your LT Username here
public static String accessKey = "accesskey" ; //Enter your LT AccessKey here
public String gridURL = "@mobile-hub.lambdatest.com/wd/hub" ;
String DeviceValue ;
String versionValue ;
String PlatformValue ;
@ org . testng . annotations . Parameters ( value = { "device" , "version" , "platform" })
public AndroidApp ( String device , String version , String platform ) {
try {
DeviceValue = device ;
versionValue = version ;
PlatformValue = platform ;
DesiredCapabilities capabilities = new DesiredCapabilities ();
capabilities . setCapability ( "build" , "ParallelSample Android" );
capabilities . setCapability ( "name" , platform + " " + device + " " + version );
capabilities . setCapability ( "deviceName" , device );
capabilities . setCapability ( "platformVersion" , version );
capabilities . setCapability ( "platformName" , platform );
capabilities . setCapability ( "isRealMobile" , true );
//AppURL (Create from Wikipedia.apk sample in project)
capabilities . setCapability ( "app" , "app url" ); //Enter your app URL from previous step here
capabilities . setCapability ( "deviceOrientation" , "PORTRAIT" );
capabilities . setCapability ( "console" , true );
capabilities . setCapability ( "network" , true );
capabilities . setCapability ( "visual" , true );
capabilities . setCapability ( "devicelog" , true );
String hub = "https://" + userName + ":" + accessKey + gridURL ;
AppiumDriver driver = new AppiumDriver ( new URL ( hub ), capabilities );
MobileElement color = ( MobileElement ) driver . findElementById ( "com.lambdatest.proverbial:id/color" );
//Changes color
color . click ();
//Back to black color
color . click ();
MobileElement text = ( MobileElement ) driver . findElementById ( "com.lambdatest.proverbial:id/Text" );
//Changes the text to proverbial
text . click ();
//toast is visible
MobileElement toast = ( MobileElement ) driver . findElementById ( "com.lambdatest.proverbial:id/toast" );
toast . click ();
//notification is visible
MobileElement notification = ( MobileElement ) driver . findElementById ( "com.lambdatest.proverbial:id/notification" );
notification . click ();
//Open the geolocation page
MobileElement geo = ( MobileElement ) driver . findElementById ( "com.lambdatest.proverbial:id/geoLocation" );
geo . click ();
Thread . sleep ( 5000 );
//takes back to home page
MobileElement home = ( MobileElement ) driver . findElementByAccessibilityId ( "Home" );
home . click ();
//Takes to speed test page
MobileElement speedtest = ( MobileElement ) driver . findElementById ( "com.lambdatest.proverbial:id/speedTest" );
speedtest . click ();
Thread . sleep ( 5000 );
MobileElement el10 = ( MobileElement ) driver . findElementByXPath ( "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.view.ViewGroup/android.widget.FrameLayout[2]/android.view.ViewGroup/android.widget.RelativeLayout/android.widget.FrameLayout[1]/android.widget.FrameLayout/android.widget.RelativeLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View/android.view.View[1]/android.view.View[3]/android.view.View[1]/android.view.View/android.widget.Button" );
el10 . click ();
Thread . sleep ( 25000 );
MobileElement el11 = ( MobileElement ) driver . findElementByXPath ( "//android.widget.FrameLayout[@content-desc= " Home " ]/android.widget.FrameLayout/android.widget.ImageView" );
el11 . click ();
//Opens the browser
MobileElement browser = ( MobileElement ) driver . findElementByAccessibilityId ( "Browser" );
browser . click ();
MobileElement el13 = ( MobileElement ) driver . findElementById ( "com.lambdatest.proverbial:id/url" );
el13 . sendKeys ( "www.lambdatest.com" );
MobileElement el14 = ( MobileElement ) driver . findElementById ( "com.lambdatest.proverbial:id/find" );
el14 . click ();
driver . quit ();
} catch ( Exception t ) {
System . out . println ();
}
}
} import io . appium . java_client . AppiumDriver ;
import io . appium . java_client . MobileElement ;
import org . openqa . selenium . JavascriptExecutor ;
import org . openqa . selenium . remote . DesiredCapabilities ;
import java . net . URL ;
public class iOSApp {
public static String userName = "username" ; //Enter your LT Username here
public static String accessKey = "accesskey" ; //Enter your LT AccessKey here
public String gridURL = "@mobile-hub.lambdatest.com/wd/hub" ;
String DeviceValue ;
String versionValue ;
String PlatformValue ;
AppiumDriver driver ;
@ org . testng . annotations . Parameters ( value = { "device" , "version" , "platform" })
public iOSApp ( String device , String version , String platform ) {
try {
DeviceValue = device ;
versionValue = version ;
PlatformValue = platform ;
DesiredCapabilities capabilities = new DesiredCapabilities ();
capabilities . setCapability ( "build" , "ParallelSample iOS" );
capabilities . setCapability ( "name" , platform + " " + device + " " + version );
capabilities . setCapability ( "deviceName" , device );
capabilities . setCapability ( "platformVersion" , version );
capabilities . setCapability ( "platformName" , platform );
capabilities . setCapability ( "isRealMobile" , true );
//AppURL (Create from proverbial.ipa sample in project)
capabilities . setCapability ( "app" , "app url" ); //Enter your app URL from previous step here
capabilities . setCapability ( "deviceOrientation" , "PORTRAIT" );
capabilities . setCapability ( "console" , true );
capabilities . setCapability ( "network" , true );
capabilities . setCapability ( "visual" , true );
capabilities . setCapability ( "devicelog" , true );
//capabilities.setCapability("geoLocation", "HK");
String hub = "https://" + userName + ":" + accessKey + gridURL ;
driver = new AppiumDriver ( new URL ( hub ), capabilities );
MobileElement color = ( MobileElement ) driver . findElementByAccessibilityId ( "Colour" );
//Changes color
color . click ();
//Back to black color
color . click ();
MobileElement text = ( MobileElement ) driver . findElementByAccessibilityId ( "Text" );
//Changes the text to proverbial
text . click ();
//toast is visible
MobileElement toast = ( MobileElement ) driver . findElementByAccessibilityId ( "Toast" );
toast . click ();
//notification is visible
MobileElement notification = ( MobileElement ) driver . findElementByAccessibilityId ( "Notification" );
notification . click ();
//Open the geolocation page
MobileElement geo = ( MobileElement ) driver . findElementByAccessibilityId ( "GeoLocation" );
geo . click ();
Thread . sleep ( 5000 );
//Takes back
driver . navigate (). back ();
//Takes to speed test page
MobileElement speedtest = ( MobileElement ) driver . findElementByAccessibilityId ( "Speed Test" );
speedtest . click ();
Thread . sleep ( 5000 );
MobileElement el10 = ( MobileElement ) driver . findElementByAccessibilityId ( "start speed test - connection type multi" );
el10 . click ();
Thread . sleep ( 25000 );
driver . navigate (). back ();
//Opens the browser
MobileElement browser = ( MobileElement ) driver . findElementByAccessibilityId ( "Browser" );
browser . click ();
Thread . sleep ( 3000 );
MobileElement el4 = ( MobileElement ) driver . findElementByAccessibilityId ( "Search" );
el4 . click ();
el4 . sendKeys ( "Lambdatest" );
(( JavascriptExecutor ) driver ). executeScript ( "lambda-status=passed" );
driver . quit ();
} catch ( Exception t ) {
System . out . println ();
(( JavascriptExecutor ) driver ). executeScript ( "lambda-status=failed" );
driver . quit ();
}
}
}.XML afin d'exécuter votre test et de définir les capacités de l'appareil. Veuillez trouver un exemple de code ci-dessous pour le même. <? xml version = " 1.0 " encoding = " UTF-8 " ?>
<! DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
< suite thread-count = " 100 " name = " Mobile " parallel = " tests " >
< test name = " AppTest 1 " >
< parameter name = " version " value = " 11 " />
< parameter name = " platform " value = " Android " />
< parameter name = " device " value = " Galaxy S21 Ultra 5G " />
< classes >
< class name = " AndroidApp " />
</ classes >
</ test >
< test name = " AppTest 2 " >
< parameter name = " version " value = " 11 " />
< parameter name = " platform " value = " Android " />
< parameter name = " device " value = " Galaxy S21 " />
< classes >
< class name = " AndroidApp " />
</ classes >
</ test >
</ suite ><? xml version = " 1.0 " encoding = " UTF-8 " ?>
<! DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
< suite thread-count = " 100 " name = " Mobile " parallel = " tests " >
< test name = " iOSApp 1 " >
< parameter name = " version " value = " 14 " />
< parameter name = " platform " value = " iOS " />
< parameter name = " device " value = " iPhone 11 " />
< classes >
< class name = " iOSApp " />
</ classes >
</ test >
< test name = " iOSApp 2 " >
< parameter name = " version " value = " 14 " />
< parameter name = " platform " value = " iOS " />
< parameter name = " device " value = " iPhone 12 Pro " />
< classes >
< class name = " iOSApp " />
</ classes >
</ test >
</ suite > Déboguez et exécutez votre code. Exécutez iOSApp.java ou AndroidApp.java dans votre éditeur.
Une fois que vous avez exécuté vos tests, vous pouvez afficher l'exécution des tests avec les journaux. Vous pourrez voir les cas de test passer ou échouer. Vous pouvez afficher la même chose chez Lambdatest Automation.
Les exemples de capacités pour Android et iOS sont mentionnés ci-dessous -
{
"deviceName" : "Galaxy Tab S4" ,
"platformName" : "android" ,
"platformVersion" : "10" ,
"app" : "App_url" ,
"visual" : True ,
"console" : True ,
"deviceOrientation" : "PORTRAIT" ,
"build" : "new-12" ,
"isRealMobile" : True ,
} {
"deviceName": "iPhone 12 Mini",
"platformName": "ios",
"platformVersion": "14",
"app": "App_url",
"isRealMobile": True,
"visual": True,
"console": True,
"build": "lt-web-4",
"network": True,
}
Remarque: Les champs obligatoires sont marqués d'astérisque *
| CLÉ | VALEURS | Description des capacités |
|---|---|---|
| *utilisateur | Type: chaîne | Votre nom d'utilisateur LT. |
| * AccessKey | Type: chaîne | Votre clé d'accès LT. |
| construire | Type: chaîne Par défaut: sans titre build=iOS Small Run | Vous pouvez regrouper vos tests comme un travail contenant plusieurs tests. |
| nom | Type: chaîne Par défaut: Témoignage du test. En cas de nom n'est pas passé. name=iphone 6 Small Run | Nom de votre test. |
| projet | Restera vide au cas où le «projet» ne sera pas transmis en capacité.project=Small Run | Vous pouvez regrouper vos versions comme un projet contenant plusieurs travaux. |
| * Devicename | Type: chaîneiPhone 13 | Nom de l'appareil. |
| * PlatformNname | Type: chaîneios | Nom du système d'exploitation. |
| * Version de plate-forme | Type: chaîne14 | Version OS. |
| * Application | Type: chaîneapp=lt://APP100201061631704657918380 | Accepte l'URL de l'application renvoyée après le téléchargement d'une application sur les serveurs lambdatest. |
| queuetimeout | Type: chaîne Par défaut: 600 queueTimeout=300 | Cette capacité peut être utilisée pour modifier la valeur de délai d'expiration de la file d'attente dans une plage. Range de queueTimeout: 300-900. |
| IdleTimeout | Type: chaîne Par défaut: 120 idleTimeout=120 | Cette capacité peut être utilisée pour modifier la valeur de délai d'expiration. |
| visuel | Type: booléen Par défaut: faux visual=TRUEOU visual=FALSE | Les captures d'écran de commande par commande seront enregistrées à chaque étape de test. Par défaut, l'indicateur est défini comme désactivé. Remarque: le temps d'exécution des tests augmentera s'il est défini comme «vrai». |
| vidéo | Type: booléen Par défaut: vrai video=TRUEOU video=FALSE | Enregistrement vidéo de l'écran complet. |
| farce | Type: booléen Par défaut: vrai devicelog=TRUEOU devicelog=FALSE | Activer les journaux des périphériques. |
| réseau | Type: booléen Par défaut: vrai network=TRUEOU network=FALSE | Activer les journaux réseau. |
| ORIENTATION DE PROPRIMATION | Type: chaînedeviceOrientation=portraitOU deviceOrientation=landscape | Modifiez l'orientation de l'écran de l'appareil. |
| tunnel | Type: booléentunnel=TRUEOU tunnel=FALSE | Pour tester les applications locales avec Lambdatest. |
| nom de tunnel | Type: booléentunnelName=RabbitHole | Nom du tunnel. |
| dédiéproxy | Type: booléendedicatedProxy=TRUEOU dedicatedProxy=FALSE | Proxy dédié. |
| AutograntPermissions | Type: booléenautoGrantPermissions=TRUEOU autoGrantPermissions=FALSE | Demandez à Appium de déterminer automatiquement les autorisations dont votre application a besoin et de les accorder à l'application lors de l'installation. Par défaut est faux. Si le numéro de l'ensemble est vrai, cette capacité ne fonctionne pas. |
| autodismissalerts | Type: booléenautoDismissAlerts=TRUEOU autoDismissAlerts=FALSE | [iOS uniquement] APPIUM CAPABILITÉ POUR LIGNER ALERTES / POPUPS SUR LES PRIQUES IOS. |
| AutoAcceptAlerts | Type: booléenautoAcceptAlerts=TRUEOU autoAcceptAlerts=FALSE | [iOS uniquement] APPIUM CAPABILITÉ D'ACCEPTER ALERTS / POPUPS SUR LES PROFICES IOS. |
| newCommandtimeout | Type: chaîne60 | Combien de temps (en secondes) Appium attendra une nouvelle commande du client avant de supposer que le client quitte et termine la session. |
| langue | Type: chaînefr | Langue à définir pour iOS (XCuitest Driver uniquement) et Android. |
| lieu | Type: chaînefr_CA, CA | Locale à définir pour iOS (XCuitest Driver uniquement) et Android. Format FR_CA pour iOS. Format CA (abréviation du nom du pays) pour Android. |
| reconstitution | Type: booléentrue | Ne réinitialisez pas l'état de l'application avant cette session. Voir ici pour plus de détails. |
| nom d'automatisation | Type: booléen Par défaut: Appium automationName = Appium | Quel moteur d'automatisation utiliser. Remarque: Définissez False dans le code d'automatisation de l'application, donc ne peut pas être modifié. Appium (par défaut), ou UiAutoMator2, Espresso ou UiAutoMator1 pour Android, ou XCUITEST ou Instruments pour iOS, ou YouEenGine pour l'application construite avec YouEngine. |
| événementations | Type: booléen Par défaut: faux true | Activer ou désactiver la déclaration des calendriers pour divers événements intérieurs appium (par exemple, le début et la fin de chaque commande, etc.). Pour activer, utilisez True. Les horaires sont ensuite signalés comme une propriété d'événements en réponse à l'interrogation de la session en cours. Voir les documents de synchronisation des événements pour la structure de cette réponse. |
| géolocalisation | Type: chaînefr | Vous permet de simuler le comportement mobile à partir de différents emplacements en sélectionnant des adresses IP hébergées dans plusieurs pays du monde. |
| Autres rapports | Type: tableau de chaînes Par défaut: [] ou un tableau vide "otherApps":["lt://APP1002211081648217405891389","lt://APP1002211081648217429465823"] | "Accepte la liste de l'URL de l'application retournée après le téléchargement d'une application sur les serveurs Lambdatest. Conditions à remplir: 1. L'application doit également être adoptée si des «autresappres» sont passées. 2. Longueur de l'URL de l'application tableau <= 3. 3. À MAX 3, d'autres applications peuvent être installées. 4. L'application ne doit pas être présente dans le tableau «AutreApp». 5. Pas de duplicité dans le tableau «AutreApp» ». |
Vous avez des questions? Veuillez contacter notre support de chat 24h / x7 ou vous pouvez également nous envoyer par courrier à [email protected].
À l'aide du tunnel lambdatest, vous pouvez tester les applications hébergées localement et privées sur divers appareils Android et iOS réels sur la plate-forme d'automatisation de test Appium Lambdatest Appium. Le tunnel Lambdatest utilise des protocoles comme le socket Web, HTTPS, SSH (Secure Shell) et plus pour vous permettre de créer une connexion de tunnel sécurisée et unique entre votre système local et les serveurs de cloud Lambdatest.
Dans cette documentation, apprenez à configurer le tunnel lambdatest pour tester les applications hébergées localement ou privées tout en effectuant une automatisation des applications mobiles.
Pour tester les applications localement, vous devrez configurer:
Connexion avec le tunnel lambdatest.
Testez les scripts pour fonctionner via le tunnel lambdatest.
Vous trouverez ci-dessous les étapes pour configurer la connexion avec le tunnel lambdatest.
Extraire le fichier binaire téléchargé.
Accédez à l'invite de commande et indiquez le répertoire / dossier où vous avez extrait le fichier binaire.
Exécutez la commande ci-dessous dans le terminal.
. / LT -- user { user 's login email} --key {user' s access key } -- tunnelName { user 's tunnel name} Après la configuration de la connexion avec le tunnel Lambdatest, vous devrez définir le tunnel de capacité sur True .
| Clé | Valeurs | Description | Capacité souhaitée |
|---|---|---|---|
| tunnel | Vrai / faux | Configurer le tunnel | "tunnel" : True, |
Vous pouvez également ajouter la capacité tunnel à l'aide du générateur de capacités lambdatest.
Dans le cas où vous avez des questions ou avez besoin d'informations supplémentaires, déposez-les à notre support de chat 24h / 24 et 7x7 ou envoyez-nous un courrier directement à [email protected].
Un inspecteur GUI pour les applications mobiles et plus, alimenté par un serveur Appium (installé séparément). Appium Inspector est un client Appium (comme WebDriverio, le client Java d'Appium, le client Python d'Appium, etc.) avec une interface utilisateur. Nous pouvons utiliser l'interface pour spécifier la version Appium Server, définir les capacités. Une fois que le serveur Appium est opérationnel et exécuté avec l'application, nous pouvons interagir avec les éléments et exécuter d'autres commandes Appium.
À la fin de ce sujet, vous pourrez:
Téléchargez votre application iOS (Fichier .IPA) ou l'application Android (fichier .apk) sur les serveurs Lambdatest à l'aide de notre API REST . Vous devez fournir votre nom d'utilisateur et AccessKey dans le Username:AccessKey dans la commande curl pour l'authentification. Assurez-vous d'ajouter le chemin d'accès de l' Appfile dans la demande de curl. Voici un exemple de demande de curl pour télécharger votre application à l'aide de notre API REST:
Utilisation du fichier d'application:
Pour iOS:
curl - u "{usename}:{accesskey}"
-- location -- request POST 'https: //manual-api.lambdatest.com/app/upload/realDevice'
-- form 'name="Android_App"'
-- form 'url="https://prod-mobile-artefacts.lambdatest.com/assets/docs/proverbial_android.apk"'Pour Windows:
curl - u "YOUR_LAMBDATEST_USERNAME:YOUR_LAMBDATEST_ACCESS_KEY" - X POST "https://manual-api.lambdatest.com/app/upload/realDevice" - F "appFile=@" / Users / macuser / Downloads / proverbial_android . apk "'Utilisation de l'URL de l'application:
Pour macOS / Linux:
curl - u "YOUR_LAMBDATEST_USERNAME:YOUR_LAMBDATEST_ACCESS_KEY"
-- location -- request POST 'https: //manual-api.lambdatest.com/app/upload/realDevice'
-- form 'name="Android_App"'
-- form 'url="https://prod-mobile-artefacts.lambdatest.com/assets/docs/proverbial_android.apk"'Pour Windows:
curl - u "YOUR_LAMBDATEST_USERNAME:YOUR_LAMBDATEST_ACCESS_KEY" - X POST "https://manual-api.lambdatest.com/app/upload/realDevice" - d "url":"https://prod-mobile-artefacts.lambdatest.com/assets/docs/proverbial_android.apk","name":"sample.apk"'Conseil:
App URL du format - lt: // app123456789123456789 et sera utilisé à l'étape suivante.Démarrez l'inspecteur Appium et sélectionnez Lambdatest dans la liste des fournisseurs de tests cloud.
Entrez dans votre nom d'utilisateur et votre clé d'accès. Vous pouvez trouver les informations d'identification disponibles sur le tableau de bord Lambdatest
Configurez les capacités de lambdatest dans l'onglet Capacités souhaitées sur Appium Inspecteur. Utilisez l'URL de l'application unique obtenue à l'étape 1 pour définir la valeur de la capacité de l'application. Une liste de toutes les capacités prises en charge par Lambdatest est disponible ici
Alternativement, nous pouvons également aller à notre générateur de capacités et générer la représentation des capacités à l'aide de l'interface graphique.

Une fois cela terminé, vous pouvez maintenant exécuter le test en cliquant sur la session de démarrage. Une fois que vous avez commencé la session, un enregistrement vidéo ainsi que des informations détaillées et des journaux de l'exécution du test seront disponibles sur le tableau de bord Lambdatest.

Vous avez des questions?
Veuillez contacter notre support de chat 24h / x7 ou vous pouvez également nous envoyer par courrier à [email protected].
Dans cette documentation, nous examinons certaines API qui vous aideront à optimiser votre flux de travail de test d'applications mobiles. Si vous effectuez des tests d'applications en direct ou automatisés, vous pouvez utiliser ces API pour récupérer et supprimer les applications.
Pour récupérer la liste de vos applications téléchargées avec leurs ID d'application, exécutez la commande Curl ci-dessous.
curl -- location -- request GET 'https://YOUR_LAMBDATEST_USERNAME:[email protected]/app/data?type=ios&level=user'Ci-dessous est la réponse à la demande de curl ci-dessus.
{ "metaData" : { "type" : "ios" , "total" : 1 } ,
"data" : [ {
"app_id" : "APP100245789181570497850" ,
"name" : "proverbial_ios.ipa" ,
"type" : "ios" ,
"updated_at" : "2022-05-10T11:19:30.000Z" ,
"shared" : false ,
"source" : "web-client"
} ] Pour supprimer vos applications soulevées, exécutez la commande Curl ci-dessous.
curl -- location -- request DELETE 'https: //YOUR_LAMBDATEST_USERNAME:[email protected]/app/delete'
-- header 'Content-Type: application/json'
-- data - raw ' {
"appIds" : "APPID1,APPID2"
} 'Ci-dessous est la réponse à la demande de curl ci-dessus.
{ "message" : "Deleted successfully." }C'est tout! Dans le cas où vous avez des questions ou avez besoin d'informations supplémentaires, vous pouvez contacter notre support de chat 24h / x7 ou nous envoyer directement à [email protected].
Lambdatest propose une grille d'automatisation Appium en ligne pour effectuer l'automatisation des applications. Le Grid Appium en ligne est disponible sur la grille locale, Browserstack, Saucelabs et Lambdatest. Par conséquent, vous pouvez migrer sans effort vos scripts (ou suites) actuels d'automatisation Appium de la grille locale, des laboratoires de sauce ou de la pack de navigation à Lambdatest.
Dans cette documentation, nous examinons comment exploiter le cloud Lambdatest pour l'automatisation des applications et migrer vos scripts de test (ou ses suites de test) à partir de votre grille locale, de vos laboratoires de sauce ou de votre navigation. Vous pouvez utiliser les capacités souhaitées de Lambdatest dans vos tests, authentifier votre session de test et exécuter des tests sur le cloud.
La migration de vos tests actuels de la grille locale, de la broweesestack ou de la sauce à Lambdatest nécessite quelques ajustements dans votre code. Dans ce guide, nous examinerons comment tirer parti des capacités souhaitées de Lambdatest dans vos tests, authentifier votre session de test et exécuter des tests sur nos navigateurs cloud.
Pour passer de la grille locale, de la broweSesack ou des laboratoires de sauce à Lambdatest, vous devez apporter des modifications à vos suites de test telles que l'authentification, les capacités souhaitées, etc.
Tout d'abord, vous devez modifier l'authentification dans les paramètres de configuration de votre suite de tests. Pour exécuter des tests sur la grille Appium Lambdatest, vous devez avoir un user_name valide et access_key pour effectuer des tests sur notre grille de cloud. Dans le cas où vous n'avez pas de compte sur Lambdatest, visitez la page d'inscription Lambdatest et créez un nouveau compte.
Voici les changements dans les paramètres:
Vous pouvez trouver le Username et Access Key dans la section de profil lambdatest du tableau de bord d'automatisation .

Lors de la migration de Browserstack ou Saucelabs vers Lambdatest, vous devez apporter les modifications suivantes dans le code existant:
Voici une comparaison côte à côte de chacun des champs que nous avons mis en évidence ci-dessus:
| Propriété | Taper | Dos de navigateur | Saucelab | Lambdatest |
|---|---|---|---|---|
| Nom d'utilisateur | Chaîne | Nom d'utilisateur pour accéder à Appium Grid sur BrowSertack | Nom d'utilisateur pour accéder à Appium Grid on Sauce Labs | Nom d'utilisateur pour accéder à Appium Grid sur Lambdatest |
| AccessKey | Chaîne | AccessKey pour accéder à Appium Grid sur Browserstack | AccessKey pour accéder à Appium Grid on Sauce Labs | AccessKey pour accéder à Appium Grid sur Lambdatest |
| URL du moyeu | Chaîne | @ hub-cloud.browserstack.com / wd / hub | ondemand.us-est-1.saucelabs.com/wd/hub | @ hub.lambdatest.com / wd / hub |
Pour une implémentation basée sur Python, voici les changements dans le script du processus d'authentification.
Dos de navigateur
userName = "BrowserStack_UserName"
accessKey = "BrowserStack_AccessKey"Saucelab
userName = "SAUCE_USERNAME"
accessKey = "SAUCE_ACCESS_KEY"Lambdatest
userName = "LambdaTest_UserName"
accessKey = "LambdaTest_AccessKey"Vous devez maintenant modifier l'URL du hub dans les paramètres de configuration de votre suite de test. L'URL du hub est du type de chaîne et spécifie l'emplacement du concentrateur auquel les tests Appium seront acheminés pour exécution.
Pour une implémentation basée sur Python, voici les changements dans le script de l'URL du hub.
Dos de navigateur
@hub-cloud.browserstack.com/wd/hub
Saucelab
@ondemand.us-west-1.saucelabs.com/wd/hub
Lambdatest
@mobile-hub.lambdatest.com/wd/hub
Le générateur de capacités vous permet de spécifier les capacités (ou capacités) souhaitées, qui sont des options de configuration qui vous permettent de spécifier ce qui suit:
Vous pouvez également sélectionner d'autres options avancées disponibles dans le générateur de capacités lambdatest.
Pour la migration, nous avons passé des tests Appium basés sur Java. Vous trouverez ci-dessous les captures d'écran du générateur de capacités de Browserstack et Lambdatest.



La comparaison des capacités générées par BrowSertack et Lambdatest Capacities Generator:
| Capacités | Dos de navigateur | Saucelab | Lambdatest |
|---|---|---|---|
| Appareil | appareil | devicename | devicename |
| Système opérateur | os_version | vision | vision |
Ce qui suit est un aperçu de la comparaison des capacités souhaitées pour la langue Java:
Dos de navigateur
//demo.java
DesiredCapabilities capabilities = new DesiredCapabilities ( ) ;
capabilities . setCapability ( "os_version" , "9.0" ) ;
capabilities . setCapability ( "device" , "Google Pixel 3" ) ;
capabilities . setCapability ( "browserstack.appium_version" , "1.21.0" ) ;Saucelab
//demo.java
MutableCapabilities caps = new MutableCapabilities ();
caps . setCapability ( "platformName" , "Android" );
caps . setCapability ( "browserName" , "Chrome" );
caps . setCapability ( "appium:deviceName" , "Google Pixel 3 GoogleAPI Emulator" );
caps . setCapability ( "appium:platformVersion" , "12.0" );
MutableCapabilities sauceOptions = new MutableCapabilities ();
sauceOptions . setCapability ( "appiumVersion" , "1.21.0" );
caps . setCapability ( "sauce:options" , sauceOptions );Lambdatest
//demo.java
DesiredCapabilities capabilities = new DesiredCapabilities ( ) ;
capabilities . setCapability ( "build" , "your build name" ) ;
capabilities . setCapability ( "name" , "your test name" ) ;
capabilities . setCapability ( "platformName" , "Android" ) ;
capabilities . setCapability ( "deviceName" , "Google Pixel 3" ) ;
capabilities . setCapability ( "isRealMobile" , true ) ;
capabilities . setCapability ( "platformVersion" , "9" ) ;Regardons un exemple qui montre l'ensemble du processus de migration. Le scénario de test consiste à ouvrir une application Wikipedia qui recherche le terme «lambdatest». Le test suivant s'exécute sur Google Pixel 3 exécutant Android 11.
from appium import webdriver
from appium . webdriver . common . mobileby import MobileBy
from selenium . webdriver . support . ui import WebDriverWait
from selenium . webdriver . support import expected_conditions as EC
import time
userName = "BrowserStack_UserName"
accessKey = "BrowserStack_AccessKey"
desired_caps = {
"build" : "Python Android" ,
"device" : "Google Pixel 3" ,
"app" : "<app_url>"
}
driver = webdriver . Remote ( "https://" + userName + ":" + accessKey + "@hub-cloud.browserstack.com/wd/hub" , desired_caps )
search_element = WebDriverWait ( driver , 30 ). until (
EC . element_to_be_clickable (( MobileBy . ACCESSIBILITY_ID , "Search Wikipedia" ))
)
search_element . click ()
search_input = WebDriverWait ( driver , 30 ). until (
EC . element_to_be_clickable (( MobileBy . ID , "org.wikipedia.alpha:id/search_src_text" ))
)
search_input . send_keys ( "BrowserStack" )
time . sleep ( 5 )
search_results = driver . find_elements_by_class_name ( "android.widget.TextView" )
assert ( len ( search_results ) > 0 )
driver . quit () #samplewikipedia.py
import ssl
try :
_create_unverified_https_context = ssl . _create_unverified_context
except AttributeError :
# Legacy Python that doesn't verify HTTPS certificates by default
pass
else :
# Handle target environment that doesn't support HTTPS verification
ssl . _create_default_https_context = _create_unverified_https_context
from threading import Thread
import time
from selenium import webdriver
from selenium . webdriver . common . keys import Keys
from selenium . webdriver . common . desired_capabilities import DesiredCapabilities
from selenium . common . exceptions import TimeoutException
from selenium . webdriver . support . ui import WebDriverWait
from selenium . webdriver . support import expected_conditions as EC
from appium . webdriver . common . mobileby import MobileBy
from appium import webdriver
# This array 'caps' defines the capabilities browser, device and OS combinations where the test will run
caps = {
caps [ 'platformName' ] = 'Android'
caps [ 'browserName' ] = 'Chrome'
caps [ 'appium:deviceName' ] = 'Google Pixel 3a GoogleAPI Emulator'
caps [ 'appium:platformVersion' ] = '11.0'
caps [ 'sauce:options' ] = {}
caps [ 'sauce:options' ][ 'appiumVersion' ] = '1.20.2'
}
# run_session function searches for 'saucelabs' on google.com
def run_session ( desired_cap ):
driver = webdriver . Remote (
command_executor = "https://SAUCE_USERNAME:[email protected]/wd/hub" ,
desired_capabilities = desired_cap )
# driver.get("https://www.ifconfig.me")
# time.sleep(10)
# Test case for the saucelabs sample Android app.
# If you have uploaded your app, update the test case here.
search_element = WebDriverWait ( driver , 30 ). until (
EC . element_to_be_clickable (
( MobileBy . ACCESSIBILITY_ID , "Search Wikipedia" ))
)
search_element . click ()
search_input = WebDriverWait ( driver , 30 ). until (
EC . element_to_be_clickable (
( MobileBy . ID , "org.wikipedia.alpha:id/search_src_text" ))
)
search_input . send_keys ( "saucelabs" )
time . sleep ( 5 )
search_results = driver . find_elements_by_class_name (
"android.widget.TextView" )
assert ( len ( search_results ) > 0 )
# Invoke driver.quit() after the test is done to indicate that the test is completed.
driver . quit ()
# The Thread function takes run_session function and each set of capability from the caps array as an argument to run each session in parallel
for cap in caps :
Thread ( target = run_session , args = ( cap ,)). start () #samplewikipedia.py
import ssl
try :
_create_unverified_https_context = ssl . _create_unverified_context
except AttributeError :
# Legacy Python that doesn't verify HTTPS certificates by default
pass
else :
# Handle target environment that doesn't support HTTPS verification
ssl . _create_default_https_context = _create_unverified_https_context
from threading import Thread
import time
from selenium import webdriver
from selenium . webdriver . common . keys import Keys
from selenium . webdriver . common . desired_capabilities import DesiredCapabilities
from selenium . common . exceptions import TimeoutException
from selenium . webdriver . support . ui import WebDriverWait
from selenium . webdriver . support import expected_conditions as EC
from appium . webdriver . common . mobileby import MobileBy
from appium import webdriver
# This array 'caps' defines the capabilities browser, device and OS combinations where the test will run
caps = [
{
"deviceName" : "Google Pixel 3" ,
"platformName" : "Android" ,
"platformVersion" : "11" ,
"app" : "<lt_app_url>" ,
"isRealMobile" : True ,
"deviceOrientation" : "PORTRAIT" ,
"build" : "Demo" ,
},
]
# run_session function searches for 'lambtest' on google.com
def run_session ( desired_cap ):
driver = webdriver . Remote (
# hub.mobile-dev-1.dev.lambdatest.io/wd/hub",
command_executor = "https://LT_USERNAME:[email protected]/wd/hub" ,
desired_capabilities = desired_cap )
# driver.get("https://www.ifconfig.me")
# time.sleep(10)
# Test case for the lambdatest sample Android app.
# If you have uploaded your app, update the test case here.
search_element = WebDriverWait ( driver , 30 ). until (
EC . element_to_be_clickable (
( MobileBy . ACCESSIBILITY_ID , "Search Wikipedia" ))
)
search_element . click ()
search_input = WebDriverWait ( driver , 30 ). until (
EC . element_to_be_clickable (
( MobileBy . ID , "org.wikipedia.alpha:id/search_src_text" ))
)
search_input . send_keys ( "lambdatest" )
time . sleep ( 5 )
search_results = driver . find_elements_by_class_name (
"android.widget.TextView" )
assert ( len ( search_results ) > 0 )
# Invoke driver.quit() after the test is done to indicate that the test is completed.
driver . quit ()
# The Thread function takes run_session function and each set of capability from the caps array as an argument to run each session in parallel
for cap in caps :
Thread ( target = run_session , args = ( cap ,)). start ()La majorité de la mise en œuvre, comme indiqué ci-dessus, reste inchangée. Seules les modifications de l'infrastructure sont apportées (c'est-à-dire au lieu de Browserstack, les tests d'automatisation des applications seraient exécutés sur Lambdatest).
Analysons ce qui a changé du point de vue de la mise en œuvre.
Dos de navigateur
from appium import webdriver
from appium . webdriver . common . mobileby import MobileBy
from selenium . webdriver . support . ui import WebDriverWait
from selenium . webdriver . support import expected_conditions as EC
import time
userName = "BrowserStack_UserName"
accessKey = "BrowserStack_AccessKey"
desired_caps = {
"build" : "Python Android" ,
"device" : "Google Pixel 3" ,
"app" : "<app_url>"
}
driver = webdriver . Remote ( "https://" + userName + ":" + accessKey + "@hub-cloud.browserstack.com/wd/hub" , desired_caps )Saucelab
from threading import Thread
import time
from selenium import webdriver
from selenium . webdriver . common . keys import Keys
from selenium . webdriver . common . desired_capabilities import DesiredCapabilities
from selenium . common . exceptions import TimeoutException
from selenium . webdriver . support . ui import WebDriverWait
from selenium . webdriver . support import expected_conditions as EC
from appium . webdriver . common . mobileby import MobileBy
from appium import webdriver
# This array 'caps' defines the capabilities browser, device and OS combinations where the test will run
caps = {
caps [ 'platformName' ] = 'Android'
caps [ 'browserName' ] = 'Chrome'
caps [ 'appium:deviceName' ] = 'Google Pixel 3a GoogleAPI Emulator'
caps [ 'appium:platformVersion' ] = '11.0'
caps [ 'sauce:options' ] = {}
caps [ 'sauce:options' ][ 'appiumVersion' ] = '1.20.2'
}
# run_session function searches for 'saucelabs' on google.com
def run_session ( desired_cap ):
driver = webdriver . Remote (
command_executor = "https://SAUCE_USERNAME:[email protected]/wd/hub" ,
desired_capabilities = desired_cap )Lambdatest
from threading import Thread
import time
from selenium import webdriver
from selenium . webdriver . common . keys import Keys
from selenium . webdriver . common . desired_capabilities import DesiredCapabilities
from selenium . common . exceptions import TimeoutException
from selenium . webdriver . support . ui import WebDriverWait
from selenium . webdriver . support import expected_conditions as EC
from appium . webdriver . common . mobileby import MobileBy
from appium import webdriver
caps = [
{
"deviceName" : "Google Pixel 3" ,
"platformName" : "Android" ,
"platformVersion" : "11" ,
"app" : "<lt_app_url>" ,
"build" : "Demo" ,
},
]
def run_session ( desired_cap ):
driver = webdriver . Remote ( command_executor = "https://LT_USERNAME:[email protected]/wd/hub" , desired_capabilities = desired_cap )Nous avons discuté de la façon de migrer des laboratoires de sauce ou de la pack de navigation à Lambdatest. Explorons comment migrer de la grille locale vers la grille Appium basée sur le cloud.
Les capacités souhaitées d'Appium sont une collection de paires de valeurs clés enveloppées dans un objet JSON. Ces paires de valeurs de clé demandent le serveur Appium pour la session d'automatisation de test requise.
Disons que vous souhaitez exécuter un test d'applications dans Python sur Samsung Galaxy Tab S4 exécutant Android 10. Vous pouvez définir la même forme sous forme de capacité que celle ci-dessous.
caps = [
{
"deviceName" : "Galaxy Tab S4" ,
"platformName" : "Android" ,
"platformVersion" : "10" ,
"build" : "Demo" ,
},
]Pour commencer, modifiez l'authentification dans les paramètres de configuration de votre suite de tests. Pour exécuter les tests sur la grille Appium Lambdatest, vous avez besoin d'un nom d'utilisateur valide et d'une clé d'accès. Si vous effectuez déjà des tests sur votre grille locale, vous devrez modifier votre script de test pour initialiser un pilote Appium avec les capacités souhaitées.
Passez les capacités à @hub.lambdatest.com/wd/hub avec vos détails d'authentification lambdatest, et vous avez terminé. Voici l'échantillon de script de test Python.
#samplewikipedia.py
import ssl
try :
_create_unverified_https_context = ssl . _create_unverified_context
except AttributeError :
# Legacy Python that doesn't verify HTTPS certificates by default
pass
else :
# Handle target environment that doesn't support HTTPS verification
ssl . _create_default_https_context = _create_unverified_https_context
from threading import Thread
import time
from selenium import webdriver
from selenium . webdriver . common . keys import Keys
from selenium . webdriver . common . desired_capabilities import DesiredCapabilities
from selenium . common . exceptions import TimeoutException
from selenium . webdriver . support . ui import WebDriverWait
from selenium . webdriver . support import expected_conditions as EC
from appium . webdriver . common . mobileby import MobileBy
from appium import webdriver
# This array 'caps' defines the capabilities of the browser, device, and OS combinations where the test will run
caps = [
{
"deviceName" : "Galaxy Tab S4" ,
"platformName" : "Android" ,
"platformVersion" : "10" ,
"app" : "lt://APP10051525539885437397" ,
"isRealMobile" : True ,
"deviceOrientation" : "PORTRAIT" ,
"visual" : True ,
"console" : True ,
"build" : "Demo" ,
},
]
# run_session function searches for 'lambdatest' on google.com
def run_session ( desired_cap ):
driver = webdriver . Remote (
# hub.mobile-dev-1.dev.lambdatest.io/wd/hub",
command_executor = "https://LT_USERNAME:[email protected]/wd/hub" ,
desired_capabilities = desired_cap )
# driver.get("https://www.ifconfig.me")
# time.sleep(10)
# Test case for the lambdatest sample Android app.
# If you have uploaded your app, update the test case here.
search_element = WebDriverWait ( driver , 30 ). until (
EC . element_to_be_clickable (
( MobileBy . ACCESSIBILITY_ID , "Search Wikipedia" ))
)
search_element . click ()
search_input = WebDriverWait ( driver , 30 ). until (
EC . element_to_be_clickable (
( MobileBy . ID , "org.wikipedia.alpha:id/search_src_text" ))
)
search_input . send_keys ( "lambdatest" )
time . sleep ( 5 )
search_results = driver . find_elements_by_class_name (
"android.widget.TextView" )
assert ( len ( search_results ) > 0 )
# Invoke driver.quit() after the test is done to indicate that the test is completed.
driver . quit ()
# The Thread function takes run_session function and each set of capability from the caps array as an argument to run each session in parallel
for cap in caps :
Thread ( target = run_session , args = ( cap ,)). start ()C'est tout! Dans le cas où vous avez des questions ou avez besoin d'informations supplémentaires, vous pouvez contacter notre support de chat 24h / x7 ou nous envoyer directement à [email protected].
Visitez les liens suivants pour en savoir plus sur les fonctionnalités de Lambdatest, la configuration et les tutoriels autour de l'automatisation des tests, des tests d'applications mobiles, des tests réactifs et des tests manuels.
La communauté lambdatest permet aux gens d'interagir avec les amateurs de technologie. Connectez-vous, posez des questions et apprenez des gens avertis en technologie. Discutez des meilleures pratiques en matière de développement Web, de tests et de DevOps avec des professionnels du monde entier?
Pour rester à jour avec les dernières fonctionnalités et modules complémentaires de produits, visitez Changelog
Lambdatest est une plateforme d'exécution et d'orchestration de test de premier plan qui est rapide, fiable, évolutive et sécurisée. Il permet aux utilisateurs d'exécuter des tests manuels et automatisés des applications Web et mobiles sur 3000+ navigateurs différents, systèmes d'exploitation et combinaisons de périphériques réelles. En utilisant Lambdatest, les entreprises peuvent assurer une rétroaction des développeurs plus rapide et donc réaliser plus rapidement le marché. Plus de 500 entreprises et 1 million de utilisateurs + dans plus de 130 pays s'appuient sur Lambdatest pour leurs besoins de test.
