
Blog ⋅ Docs ⋅ Learning Hub ⋅ Newsletter ⋅ Certificaciones ⋅ YouTube
Appium es una herramienta para automatizar aplicaciones nativas, móviles web e híbridas en plataformas iOS, Android y Windows. Admite aplicaciones nativas de iOS escritas en aplicaciones Native Native Objective-C o Swift y Android escritas en Java o Kotlin. También admite aplicaciones web móviles a la que se accede utilizando un navegador móvil (Appium admite Safari en iOS y Chrome o la aplicación 'Browser' incorporada en Android). Realice pruebas de automatización de Appium en la nube en línea de Lambdatest.
Consejo: si no tiene algún archivo .apk o .ipa , ¿puede ejecutar sus pruebas de muestra en Lambdatest usando nuestra muestra? ¿Aplicación o muestra de Android? aplicación iOS.
Aquí hay una lista de idiomas y marcos que son compatibles con las pruebas de automatización de LambDatest para ejecutar Appium en la plataforma de nube de dispositivos reales Lambdatest.
| Java | Php | Rubí | DO# | Pitón | Javascript |
|---|---|---|---|---|---|
| Junit | Php | Pepino | DO# | Comportarse | Webdriverio |
| Robot |
Apoyamos todos los idiomas y marcos que son compatibles con Appium, por lo que en caso de que su favorito no esté en la mesa. No se preocupe, aún puede ejecutar la prueba. Contáctenos para cualquier ayuda.
Nota: estamos preparando documentación para más marcos. Si desea que prioricemos la documentación de su marco preferido, no dude en darnos un grito .
Cargue su aplicación iOS (archivo .ipa) o la aplicación Android (archivo .apk) a los servidores LambDatest utilizando nuestra API REST . Debe proporcionar su nombre de usuario y AccessKey en el Username:AccessKey en el comando CURL para la autenticación. Asegúrese de agregar la ruta del AppFile en la solicitud CURL. Aquí hay una solicitud de curl de ejemplo para cargar su aplicación usando nuestra API REST:
Para 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"'Para 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 ""Uso de URL de la aplicación:
Para 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"'Para 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"'Nota de información:
La respuesta de Curl anterior será un objeto JSON que contenga la App URL del formato - LT: // APP123456789123456789 y se usará en el siguiente paso.
Aquí hay un script de automatización de muestra en Java para la aplicación de muestra descargada anteriormente. Asegúrese de actualizar el app_url , username y accesskey en el siguiente código.
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 para ejecutar su prueba y definir las capacidades del dispositivo. Encuentre el código de muestra a continuación para el mismo. <? 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 > Depurar y ejecutar su código. Ejecute iOSApp.java o AndroidApp.java en su editor.
Una vez que haya ejecutado sus pruebas, puede ver la ejecución de la prueba junto con los registros. Podrá ver los casos de prueba pasando o fallar. Puede ver lo mismo en Lambdatest Automation.
Las capacidades de muestra tanto para Android como para iOS se mencionan a continuación -
{
"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,
}
Nota: los campos obligatorios están marcados con asterisco *
| LLAVE | VALORES | Descripción de la capacidad |
|---|---|---|
| *usuario | Tipo: cadena | Tu nombre de usuario LT. |
| *AccessKey | Tipo: cadena | Su clave de acceso LT. |
| construir | Tipo: cadena Valor predeterminado: sin título build=iOS Small Run | Puede agrupar sus pruebas como un trabajo que contiene múltiples pruebas. |
| nombre | Tipo: cadena Valor predeterminado: TestId de la prueba. En caso de que el nombre no se pase. name=iphone 6 Small Run | Nombre de tu prueba. |
| proyecto | Permanecerá en blanco en caso de que el 'proyecto' no se apruebe en la capacidad.project=Small Run | Puede agrupar sus compilaciones como un proyecto que contiene múltiples trabajos. |
| *Nombre devicen | Tipo: cadenaiPhone 13 | Nombre del dispositivo. |
| *Nombre de plataforma | Tipo: cadenaios | Nombre del sistema operativo. |
| *Plataforma | Tipo: cadena14 | Versión del sistema operativo. |
| *Aplicación | Tipo: cadenaapp=lt://APP100201061631704657918380 | Acepta la URL de la aplicación devuelta después de cargar una aplicación en los servidores LambDatest. |
| réplica | Tipo: cadena Valor predeterminado: 600 queueTimeout=300 | Esta capacidad se puede utilizar para modificar el valor de tiempo de espera de la cola dentro de un rango. Rango de QueuetimeOut: 300-900. |
| idletimout | Tipo: cadena Valor predeterminado: 120 idleTimeout=120 | Esta capacidad se puede usar para modificar el valor de tiempo de espera. |
| visual | Tipo: booleano Valor predeterminado: falso visual=TRUEO visual=FALSE | Las capturas de pantalla de comando por comando se grabarán en cada paso de prueba. Por defecto, el indicador está configurado como apagado. Nota: El tiempo de ejecución de la prueba aumentará si se establece como 'verdadero'. |
| video | Tipo: booleano Valor predeterminado: Verdadero video=TRUEO video=FALSE | Grabación de video de la pantalla completa. |
| devicelog | Tipo: booleano Valor predeterminado: Verdadero devicelog=TRUEO devicelog=FALSE | Habilitar registros de dispositivos. |
| red | Tipo: booleano Valor predeterminado: Verdadero network=TRUEO network=FALSE | Habilitar registros de red. |
| orientación de dispositivos | Tipo: cadenadeviceOrientation=portraitO deviceOrientation=landscape | Cambie la orientación de la pantalla del dispositivo. |
| túnel | Tipo: booleanotunnel=TRUEO tunnel=FALSE | Probar aplicaciones locales con Lambdatest. |
| nombre de túnel | Tipo: booleanotunnelName=RabbitHole | Nombre del túnel. |
| proxy dedicado | Tipo: booleanodedicatedProxy=TRUEO dedicatedProxy=FALSE | Proxy dedicado. |
| autograntado | Tipo: booleanoautoGrantPermissions=TRUEO autoGrantPermissions=FALSE | Haga que Appium determine automáticamente qué permisos requiere su aplicación y concórtelos a la aplicación en la instalación. El valor predeterminado es falso. Si Noreset es cierta, esta capacidad no funciona. |
| autodismissalerts | Tipo: booleanoautoDismissAlerts=TRUEO autoDismissAlerts=FALSE | [Solo iOS] Capacidad de Appium para descartar alertas/ventanas emergentes en dispositivos iOS. |
| autoaceptacional | Tipo: booleanoautoAcceptAlerts=TRUEO autoAcceptAlerts=FALSE | [Solo iOS] Capacidad de Appium para aceptar alertas/ventanas emergentes en dispositivos iOS. |
| Newcommandtimeut | Tipo: cadena60 | ¿Cuánto tiempo (en segundos) Appium esperará un nuevo comando del cliente antes de asumir que el cliente renuncia y finaliza la sesión? |
| idioma | Tipo: cadenafr | Lenguaje para configurar iOS (solo controlador XCuitest) y Android. |
| lugar | Tipo: cadenafr_CA, CA | Local para establecer para iOS (solo controlador XCuitest) y Android. Formato FR_CA para iOS. Formato CA (abreviatura del nombre del país) para Android. |
| noreseta | Tipo: booleanotrue | No reinicie el estado de la aplicación antes de esta sesión. Vea aquí para más detalles. |
| nombre de automatización | Tipo: booleano Valor predeterminado: Appium automationName = Appium | Qué motor de automatización usar. Nota: Establezca como falso en el código de automatización de la aplicación, por lo que no se puede cambiar. Appium (predeterminado), o uiautomator2, espresso o uiautomator1 para android, o xcuitest o instrumentos para iOS, o yoiEngine para la aplicación construida con YouIengine. |
| Eventualmente | Tipo: booleano Valor predeterminado: falso true | Habilite o deshabilite el informe de los tiempos para varios eventos internos de Appium (por ejemplo, el inicio y el final de cada comando, etc.). Para habilitar, use verdadero. Los tiempos se informan como propiedad de eventos en respuesta a la consulta de la sesión actual. Vea los documentos de tiempo del evento para la estructura de esta respuesta. |
| geolocalización | Tipo: cadenafr | Le permite simular el comportamiento móvil desde diferentes ubicaciones seleccionando direcciones IP alojadas en varios países de todo el mundo. |
| Otros Apps | Tipo: matriz de cuerdas Predeterminado: [] o matriz vacía "otherApps":["lt://APP1002211081648217405891389","lt://APP1002211081648217429465823"] | "Acepta la lista de URL de la aplicación devuelta después de cargar una aplicación en los servidores LambDatest. Condiciones a satisfacer: 1. La aplicación también debe aprobarse si se pasa "OtherApps". 2. Longitud de la URL de la aplicación matriz <= 3. 3. En el máximo se pueden instalar otras 3 aplicaciones. 4. La aplicación no debe estar presente dentro de la matriz 'OtroApp'. 5. No duplicada en la matriz 'OtherApp' ". |
¿Tienes alguna pregunta? Comuníquese con nuestro soporte de chat 24x7 o también puede enviarnos un correo electrónico a [email protected].
Usando el túnel Lambdatest, puede probar aplicaciones alojadas locales y privadas en varios dispositivos reales de Android e iOS en la plataforma de automatización de pruebas de Appium LambDatest. Lambdatest Tunnel utiliza protocolos como Socket Web, HTTPS, SSH (Shell Secure) y más para permitirle construir una conexión de túnel segura y única entre su sistema local y los servidores de nubes Lambdatest.
En esta documentación, aprenda cómo configurar el túnel Lambdatest para probar aplicaciones alojadas locales o privadas mientras realiza la automatización de aplicaciones móviles.
Para probar aplicaciones localmente, deberá configurar:
Conexión con el túnel Lambdatest.
Pruebe los scripts para ejecutar a través del túnel Lambdatest.
A continuación se muestran los pasos para configurar la conexión con el túnel Lambdatest.
Extraiga el archivo binario descargado.
Navegue al símbolo del sistema y apunte al directorio/carpeta donde extrajo el archivo binario.
Ejecute el siguiente comando en el terminal.
. / LT -- user { user 's login email} --key {user' s access key } -- tunnelName { user 's tunnel name} Después de configurar la conexión con el túnel Lambdatest, deberá establecer el tunnel de capacidad en True .
| Llave | Valores | Descripción | Capacidad deseada |
|---|---|---|---|
| túnel | verdadero/falso | Configurar el túnel | "tunnel" : True, |
También puede agregar la capacidad tunnel usando el generador de capacidad LambDatest.
En caso de que tenga alguna pregunta o necesite información adicional, envíelos en nuestro soporte de chat 24x7 o envíenos un correo electrónico directamente a [email protected].
Un inspector de GUI para aplicaciones móviles y más, alimentado por un servidor Appium (instalado por separado). Appium Inspector es un cliente de Appium (como WebDriverio, el cliente Java de Appium, el cliente Python de Appium, etc.) con una interfaz de usuario. Podemos usar la interfaz para especificar la versión del servidor de Appium, configurar capacidades. Una vez que el servidor Appium está en ejecución con la aplicación, podemos interactuar con elementos y ejecutar otros comandos de Appium.
Al final de este tema, podrá:
Cargue su aplicación iOS (archivo .ipa) o la aplicación Android (archivo .apk) a los servidores LambDatest utilizando nuestra API REST . Debe proporcionar su nombre de usuario y AccessKey en el Username:AccessKey en el comando CURL para la autenticación. Asegúrese de agregar la ruta del AppFile en la solicitud CURL. Aquí hay una solicitud de curl de ejemplo para cargar su aplicación usando nuestra API REST:
Usando el archivo de la aplicación:
Para 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"'Para 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 "'Uso de URL de la aplicación:
Para 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"'Para 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"'Consejo:
App URL del formato - LT: // APP123456789123456789 y se usará en el siguiente paso.Inicie el Inspector de Appium y seleccione LambDatest en la lista de proveedores de pruebas de nubes.
Ingrese en su nombre de usuario y clave de acceso. Puede encontrar las credenciales disponibles en Lambdatest Dashboard
Configure las capacidades LambDatest en la pestaña Capacidades deseadas en Appium Inspector. Use la URL de aplicación única obtenida en el Paso 1 para establecer el valor de capacidad de la aplicación. Una lista de todas las capacidades respaldadas por Lambdatest está disponible aquí
Alternativamente, también podemos ir a nuestro generador de capacidades y generar la representación de capacidad utilizando GUI.

Una vez que esto esté completo, ahora puede ejecutar la prueba haciendo clic en la sesión de inicio. Una vez que comience la sesión, una grabación de video junto con información detallada y registros de la ejecución de la prueba estarán disponibles en el tablero Lambdatest.

¿Tienes alguna pregunta?
Comuníquese con nuestro soporte de chat 24x7 o también puede enviarnos un correo electrónico a [email protected].
En esta documentación, observamos algunas API que lo ayudarán a optimizar su flujo de trabajo de prueba de aplicaciones móviles. Si realiza pruebas de aplicaciones en vivo o automatizadas, puede usar estas API para obtener y eliminar las aplicaciones.
Para obtener la lista de sus aplicaciones cargadas junto con sus ID de aplicación, ejecute el siguiente comando CURL.
curl -- location -- request GET 'https://YOUR_LAMBDATEST_USERNAME:[email protected]/app/data?type=ios&level=user'A continuación se muestra la respuesta a la solicitud de curl anterior.
{ "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"
} ] Para eliminar sus aplicaciones elevadas, ejecute el siguiente comando curl.
curl -- location -- request DELETE 'https: //YOUR_LAMBDATEST_USERNAME:[email protected]/app/delete'
-- header 'Content-Type: application/json'
-- data - raw ' {
"appIds" : "APPID1,APPID2"
} 'A continuación se muestra la respuesta a la solicitud de curl anterior.
{ "message" : "Deleted successfully." }¡Eso es todo! En caso de que tenga alguna pregunta o necesite información adicional, puede comunicarse con nuestro soporte de chat 24x7 o enviarnos un correo electrónico directamente a [email protected].
Lambdatest ofrece una cuadrícula de automatización de Appium en línea para realizar la automatización de aplicaciones. La cuadrícula de Appium en línea está disponible en la cuadrícula local, Browserstack, Saucelabs y Lambdatest. Por lo tanto, puede migrar sin esfuerzo sus scripts (o suites) de automatización de Appium sin esfuerzo desde la cuadrícula local, los laboratorios de salsa o la browserstack hasta Lambdatest.
En esta documentación, observamos cómo aprovechar Lambdatest Cloud para la automatización de aplicaciones y migrar sus scripts de prueba (o suites de prueba) desde su cuadrícula local, laboratorios de salsa o browserstack. Puede usar las capacidades deseadas de Lambdatest en sus pruebas, autenticar su sesión de prueba y ejecutar pruebas en la nube.
La migración de las pruebas actuales de la cuadrícula local, la pantalla de navegas o los laboratorios de salsa a Lambdatest requiere algunos ajustes en su código. En esta guía, veremos cómo aprovechar las capacidades deseadas de Lambdatest en sus pruebas, autenticar su sesión de prueba y ejecutar pruebas en nuestros navegadores en la nube.
Para moverse de la red local, la institución de navegas o los laboratorios de salsa a Lambdatest, debe realizar algunos cambios en sus suites de prueba, como autenticación, capacidades deseadas, etc.
En primer lugar, debe cambiar la autenticación en la configuración de la configuración de su conjunto de pruebas. Para ejecutar pruebas en Lambdatest Appium Grid, debe tener un user_name Valvido_Name y access_key para realizar pruebas en nuestra cuadrícula en la nube. En caso de que no tenga una cuenta en Lambdatest, visite la página de registro de Lambdatest y cree una nueva cuenta.
Los siguientes son los cambios en los parámetros:
Puede encontrar el Username y Access Key en la sección de perfil LambDatest del tablero de automatización .

Cuando migra de Browserstack o Saucelabs a Lambdatest, debe realizar los siguientes cambios en el código existente:
Aquí hay una comparación de lado a lado de cada uno de los campos que hemos resaltado anteriormente:
| Propiedad | Tipo | Browserstack | Saucelabs | Breve |
|---|---|---|---|---|
| Nombre de usuario | Cadena | Nombre de usuario para acceder a la cuadrícula Appium en Browserstack | Nombre de usuario para acceder a la cuadrícula Appium en los laboratorios de salsa | Nombre de usuario para acceder a Appium Grid en Lambdatest |
| Llave de acceso | Cadena | AccessKey para acceder a Appium Grid en Browserstack | AccessKey para acceder a la cuadrícula Appium en los laboratorios de salsa | AccessKey para acceder a la cuadrícula Appium en Lambdatest |
| Hub URL | Cadena | @hubcloud.browserstack.com/wd/hub | ondemand.us-west-1.saucelabs.com/wd/hub | @hub.lambdatest.com/wd/hub |
Para una implementación basada en Python, aquí están los cambios en el script para el proceso de autenticación.
Browserstack
userName = "BrowserStack_UserName"
accessKey = "BrowserStack_AccessKey"Saucelabs
userName = "SAUCE_USERNAME"
accessKey = "SAUCE_ACCESS_KEY"Breve
userName = "LambdaTest_UserName"
accessKey = "LambdaTest_AccessKey"Ahora debe modificar la URL del HUB en la configuración de configuración de su suite de prueba. La URL HUB es del tipo de cadena y especifica la ubicación del HUB a la que se enrutarán las pruebas de Appium para su ejecución.
Para una implementación basada en Python, aquí están los cambios en el script para la URL HUB.
Browserstack
@hub-cloud.browserstack.com/wd/hub
Saucelabs
@ondemand.us-west-1.saucelabs.com/wd/hub
Breve
@mobile-hub.lambdatest.com/wd/hub
El generador de capacidades le permite especificar las capacidades deseadas (o capacidades), que son opciones de configuración que le permiten especificar lo siguiente:
También puede seleccionar otras opciones avanzadas disponibles en el generador de capacidades LambDatest.
Para la migración, hemos realizado pruebas de Appium basadas en Java. A continuación se muestran las capturas de pantalla del generador de capacidad de Browserstack y Lambdatest.



La comparación de las capacidades generadas por el generador de capacidades Browserstack y Lambdatest:
| Capacidades | Browserstack | Saucelabs | Breve |
|---|---|---|---|
| Dispositivo | dispositivo | nombre de devicen | nombre de devicen |
| Sistema operativo | OS_VERSION | plataforma | plataforma |
La siguiente es una descripción general de la comparación de las capacidades deseadas para el idioma Java:
Browserstack
//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" ) ;Saucelabs
//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 );Breve
//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" ) ;Veamos un ejemplo que muestra todo el proceso de migración. El escenario de prueba es abrir una aplicación Wikipedia que busque el término 'Lambdatest'. La siguiente prueba se ejecuta en Google Pixel 3 con 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 mayoría de la implementación, como se muestra arriba, permanece sin cambios. Solo se realizan cambios en la infraestructura (es decir, en lugar de Browserstack, las pruebas de automatización de aplicaciones se ejecutarían en Lambdatest).
Analicemos lo que ha cambiado desde el punto de vista de implementación.
Browserstack
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 )Saucelabs
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 )Breve
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 )Hemos discutido cómo migrar de Sauce Labs o Browserstack a Lambdatest. Exploremos cómo migrar de la red local a la cuadrícula Appium basada en la nube.
Las capacidades deseadas de Appium son una colección de pares de valores clave envueltos dentro de un objeto JSON. Estos pares de valor clave solicitan el servidor Appium para la sesión de automatización de pruebas requerida.
Supongamos que desea ejecutar una prueba de aplicación en Python en Samsung Galaxy Tab S4 con Android 10. Puede definir lo mismo en forma de capacidad como se da a continuación.
caps = [
{
"deviceName" : "Galaxy Tab S4" ,
"platformName" : "Android" ,
"platformVersion" : "10" ,
"build" : "Demo" ,
},
]Para comenzar, cambie la autenticación en la configuración de configuración de su suite de prueba. Para ejecutar las pruebas en Lambdatest Appium Grid, necesita un nombre de usuario y clave de acceso válidos. Si ya estaba realizando pruebas en su cuadrícula local, deberá modificar su script de prueba para inicializar un controlador Appium junto con las capacidades deseadas.
Pase las capacidades a @hub.lambdatest.com/wd/hub con sus detalles de autenticación Lambdatest, y ya está terminado. Aquí está la muestra de script de prueba de 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 ()¡Eso es todo! En caso de que tenga alguna pregunta o necesite información adicional, puede comunicarse con nuestro soporte de chat 24x7 o enviarnos un correo electrónico directamente a [email protected].
Visite los siguientes enlaces para obtener más información sobre las características, la configuración y los tutoriales de Lambdatest en torno a la automatización de pruebas, pruebas de aplicaciones móviles, pruebas receptivas y pruebas manuales.
La comunidad Lambdatest permite a las personas interactuar con los entusiastas de la tecnología. Conecte, haga preguntas y aprenda de personas expertas en tecnología. ¿Discutir las mejores prácticas en desarrollo web, pruebas y devops con profesionales de todo el mundo?
Para mantenerse actualizado con las últimas funciones y complementos de productos, visite ChangeLog
Lambdatest es una plataforma de ejecución y orquestación de prueba líder que es rápida, confiable, escalable y segura. Permite a los usuarios ejecutar pruebas manuales y automatizadas de aplicaciones web y móviles en más de 3000 navegadores diferentes, sistemas operativos y combinaciones de dispositivos reales. Utilizando Lambdatest, las empresas pueden garantizar la retroalimentación más rápida del desarrollador y, por lo tanto, lograr un Ir más rápido al mercado. Más de 500 empresas y más de 1 millón de usuarios en más de 130 países dependen de Lambdatest para sus necesidades de prueba.
