
Blog ⋅ Docos ⋅ Aprendizagem Hub ⋅ Boletim ⋅ Certificações ⋅ YouTube
O Appium é uma ferramenta para automatizar aplicativos nativos, móveis da Web e híbridos nas plataformas iOS, Android e Windows. Ele suporta aplicativos nativos do iOS escritos em aplicativos Nativos Objective-C ou Swift e Android escritos em Java ou Kotlin. Ele também suporta aplicativos da Web móveis acessados usando um navegador móvel (o Appium suporta o Safari no iOS e o Chrome ou o aplicativo 'navegador' embutido no Android). Execute testes de automação de Appium na nuvem online do Lambdatest.
Dica: se você não tiver nenhum arquivo .apk ou .ipa , poderá executar seus testes de amostra no Lambdatest usando nossa amostra? Aplicativo Android ou amostra? aplicativo iOS.
Aqui está uma lista de idiomas e estruturas suportadas pelo Lambdatest para executar testes de automação de Appium na plataforma de nuvem de dispositivos reais Lambdatate.
| Java | Php | Rubi | C# | Python | JavaScript |
|---|---|---|---|---|---|
| Junit | Php | Pepino | C# | Comportar-se | WebDriverio |
| Robô |
Apoiamos todos os idiomas e estruturas compatíveis com o Appium, portanto, caso seu favorito não esteja na tabela. Não se preocupe, você ainda pode executar o teste. Entre em contato conosco para obter qualquer ajuda.
Nota: Estamos preparando a documentação para mais estruturas. Se você deseja que priorizemos a documentação da sua estrutura preferida, fique à vontade para nos dar um grito .
Carregue seu aplicativo iOS (arquivo .ipa) ou aplicativo Android (arquivo .apk) para os servidores Lambdatest usando nossa API REST . Você precisa fornecer seu nome de usuário e AccessKey no Username:AccessKey no comando curl para autenticação. Certifique -se de adicionar o caminho do Appfile na solicitação de CLL. Aqui está um exemplo de solicitação de curl para fazer upload do seu aplicativo usando nossa 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 ""Usando o URL do aplicativo:
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 informação:
A resposta do CURL acima será um objeto JSON que contém o App URL do formato - lt: // app123456789123456789 e será usado na próxima etapa.
Aqui está um script de automação de amostra em Java para o aplicativo de amostra baixado acima. Certifique -se de atualizar o nome de app_url , username e accesskey no código abaixo.
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 executar seu teste e definir recursos de dispositivo. Encontre o código de exemplo abaixo para o mesmo. <? 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 > Debug e execute seu código. Execute iOSApp.java ou AndroidApp.java em seu editor.
Depois de executar seus testes, você pode visualizar a execução do teste junto com os logs. Você poderá ver os casos de teste passando ou falhando. Você pode visualizar o mesmo na Automação Lambdatest.
Os recursos de amostra para Android e iOS são mencionados abaixo -
{
"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: Os campos obrigatórios são marcados com asterisco *
| CHAVE | Valores | Descrição da capacidade |
|---|---|---|
| *usuário | Tipo: string | Seu nome de usuário LT. |
| *AccessKey | Tipo: string | Sua chave de acesso LT. |
| construir | Tipo: string Padrão: sem título build=iOS Small Run | Você pode agrupar seus testes, como um trabalho que contém vários testes. |
| nome | Tipo: string Padrão: TestId do teste. No caso do nome não é passado. name=iphone 6 Small Run | Nome do seu teste. |
| projeto | Permanecerá em branco no caso de 'projeto' não for aprovado em capacidade.project=Small Run | Você pode agrupar suas construções como um projeto que contém vários trabalhos. |
| *nome do deviceN | Tipo: stringiPhone 13 | Nome do dispositivo. |
| *Nome da plataforma | Tipo: stringios | Nome do sistema operacional. |
| *PlatformVersion | Tipo: string14 | Versão do sistema operacional. |
| *App | Tipo: stringapp=lt://APP100201061631704657918380 | Aceita o URL do aplicativo retornado após o upload de um aplicativo nos servidores Lambdatest. |
| Queuetimeout | Tipo: string Padrão: 600 queueTimeout=300 | Esse recurso pode ser usado para modificar o valor do tempo limite da fila dentro de um intervalo. Faixa de Queuetimeout: 300-900. |
| Idletimeout | Tipo: string Padrão: 120 idleTimeout=120 | Esse recurso pode ser usado para modificar o valor do tempo limite. |
| visual | Tipo: booleano Padrão: false visual=TRUEOU visual=FALSE | As capturas de tela de comando por comando serão gravadas em cada etapa de teste. Por padrão, o sinalizador está definido como desligado. NOTA: O tempo de execução do teste aumentará se for definido como 'true'. |
| vídeo | Tipo: booleano Padrão: true video=TRUEOU video=FALSE | Gravação em vídeo da tela completa. |
| deviceLog | Tipo: booleano Padrão: true devicelog=TRUEOU devicelog=FALSE | Ativar logs do dispositivo. |
| rede | Tipo: booleano Padrão: true network=TRUEOU network=FALSE | Ativar logs de rede. |
| dispositivo de dispositivo | Tipo: stringdeviceOrientation=portraitOU deviceOrientation=landscape | Altere a orientação da tela do dispositivo. |
| túnel | Tipo: booleanotunnel=TRUEOU tunnel=FALSE | Para testar aplicativos locais com Lambdatest. |
| nome do túnel | Tipo: booleanotunnelName=RabbitHole | Nome do túnel. |
| DedicatedProxy | Tipo: booleanodedicatedProxy=TRUEOU dedicatedProxy=FALSE | Proxy dedicado. |
| PERMISSÕES AUTOGRANTES | Tipo: booleanoautoGrantPermissions=TRUEOU autoGrantPermissions=FALSE | Peça ao Appium determinar automaticamente quais permissões seu aplicativo exige e conceda -as ao aplicativo na instalação. Padrões para false. Se Noreset for verdadeiro, esse recurso não funciona. |
| AUTODISMISSALERTS | Tipo: booleanoautoDismissAlerts=TRUEOU autoDismissAlerts=FALSE | [Somente iOS] Appium Capacidade de descartar alertas/pop -ups nos dispositivos iOS. |
| AutoAceptalerts | Tipo: booleanoautoAcceptAlerts=TRUEOU autoAcceptAlerts=FALSE | [Somente iOS] Appium Capacidade de aceitar alertas/pop -ups nos dispositivos iOS. |
| NewCommandTimeout | Tipo: string60 | Quanto tempo (em segundos) Appium aguardará um novo comando do cliente antes de assumir que o cliente sai e encerrar a sessão. |
| linguagem | Tipo: stringfr | Idioma a ser configurado para iOS (apenas driver Xcuitest) e Android. |
| localidade | Tipo: stringfr_CA, CA | Local para definir para iOS (apenas driver Xcuitest) e Android. Formato FR_CA para iOS. Formato da CA (abreviação de nome do país) para Android. |
| Noreset | Tipo: booleanotrue | Não redefine o estado do aplicativo antes desta sessão. Veja aqui para mais detalhes. |
| AutomationName | Tipo: booleano Padrão: Appium automationName = Appium | Qual mecanismo de automação usar. Nota: Defina como false no código de automação de aplicativos, portanto, não pode ser alterado. Appium (padrão), ou Uiautomator2, Espresso ou Uiautomator1 para Android, ou Xcuitest ou Instrumentos para iOS, ou YouiEngine for Application Build With YouiEngine. |
| Eventimings | Tipo: booleano Padrão: false true | Habilite ou desative o relatório dos horários para vários eventos internos do Appium (por exemplo, o início e o final de cada comando, etc.). Para ativar, use true. Os horários são então relatados como propriedade de eventos na resposta à consulta da sessão atual. Veja os documentos de tempo do evento para a estrutura desta resposta. |
| Geolocation | Tipo: stringfr | Permite simular o comportamento móvel de diferentes locais, selecionando endereços IP hospedados em vários países ao redor do mundo. |
| Outros Apps | Tipo: Matriz de Strings Padrão: [] ou matriz vazia "otherApps":["lt://APP1002211081648217405891389","lt://APP1002211081648217429465823"] | "Aceita a lista de URL do aplicativo retornada após o upload de um aplicativo nos servidores Lambdatest. Condições a serem satisfeitas: 1. O aplicativo também deve ser aprovado se os “outros aplicativos” forem aprovados. 2. Comprimento do URL do aplicativo Array <= 3. 3. No máximo, 3 outros aplicativos podem ser instalados. 4. O aplicativo não deve estar presente dentro da matriz 'Otherpp'. 5. Nenhuma duplicada na matriz 'Otherpp'. " |
Tem alguma dúvida? Entre em contato com nosso suporte de bate -papo 24x7 ou você também pode nos enviar um e -mail para [email protected].
Usando o túnel Lambdatest, você pode testar aplicativos hospedados localmente e privados em vários dispositivos Android e iOS reais na plataforma de automação de teste de Appium Lambdatatest. O túnel Lambdatest usa protocolos como soquete da web, https, ssh (shell seguro) e muito mais para permitir que você crie uma conexão de túnel segura e exclusiva entre o sistema local e os servidores de nuvem Lambdatest.
Nesta documentação, aprenda a configurar o túnel Lambdatest para testar aplicativos hospedados localmente ou privados enquanto executa a automação de aplicativos móveis.
Para testar aplicativos localmente, você precisará configurar:
Conexão com o túnel Lambdatest.
Scripts de teste para executar via túnel Lambdatest.
Abaixo estão as etapas para configurar a conexão com o túnel Lambdatest.
Extraia o arquivo binário baixado.
Navegue até o prompt de comando e aponte para o diretório/pasta onde você extraiu o arquivo binário.
Execute o comando abaixo no terminal.
. / LT -- user { user 's login email} --key {user' s access key } -- tunnelName { user 's tunnel name} Depois de configurar a conexão com o túnel Lambdatest, você precisará definir o tunnel de capacidade como True .
| Chave | Valores | Descrição | Capacidade desejada |
|---|---|---|---|
| túnel | verdadeiro/falso | Configure o túnel | "tunnel" : True, |
Você também pode adicionar a capacidade tunnel usando o gerador de capacidade Lambdatest.
Caso você tenha alguma dúvida ou precise de informações adicionais, solte -as em nosso suporte de bate -papo 24x7 ou envie -nos diretamente em [email protected].
Um inspetor da GUI para aplicativos móveis e muito mais, alimentado por um servidor Appium (instalado separadamente). O Appium Inspetor é um cliente Appium (como o WebDriverio, o cliente Java da Appium, o cliente Python da Appium etc.) com uma interface de usuário. Podemos usar a interface para especificar a versão do Appium Server, definindo recursos. Depois que o servidor Appium estiver em funcionamento com o aplicativo, podemos interagir com elementos e executar outros comandos do Appium.
No final deste tópico, você poderá:
Carregue seu aplicativo iOS (arquivo .ipa) ou aplicativo Android (arquivo .apk) para os servidores Lambdatest usando nossa API REST . Você precisa fornecer seu nome de usuário e AccessKey no Username:AccessKey no comando curl para autenticação. Certifique -se de adicionar o caminho do Appfile na solicitação de CLL. Aqui está um exemplo de solicitação de curl para fazer upload do seu aplicativo usando nossa API REST:
Usando o arquivo de aplicativo:
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 "'Usando o URL do aplicativo:
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"'Dica:
App URL do formato - lt: // app123456789123456789 e será usado na próxima etapa.Inicie o Inspetor Appium e selecione Lambdatest na lista de provedores de testes em nuvem.
Digite sua chave de nome de usuário e acesso. Você pode encontrar as credenciais disponíveis no painel Lambdatest
Configure os recursos do Lambdatest na guia Capacidades desejadas no Appium Inspetor. Use o URL de aplicativo exclusivo obtido na Etapa 1 para definir o valor de capacidade do aplicativo. Uma lista de todos os recursos suportados pelo Lambdatest está disponível aqui
Como alternativa, também podemos ir ao nosso gerador de recursos e gerar a representação de capacidade usando a GUI.

Uma vez concluído, agora você pode executar o teste clicando na sessão de início. Depois de iniciar a sessão, uma gravação de vídeo junto com informações detalhadas e logs da execução do teste estará disponível no painel Lambdatest.

Tem alguma dúvida?
Entre em contato com nosso suporte de bate -papo 24x7 ou você também pode nos enviar um e -mail para [email protected].
Nesta documentação, analisamos algumas APIs que o ajudarão a otimizar seu fluxo de trabalho de teste de aplicativo móvel. Se você estiver realizando testes de aplicativos ao vivo ou automatizados, poderá usar essas APIs para buscar e excluir os aplicativos.
Para buscar a lista de seus aplicativos enviados junto com seus IDs de aplicativos, execute o comando curl abaixo.
curl -- location -- request GET 'https://YOUR_LAMBDATEST_USERNAME:[email protected]/app/data?type=ios&level=user'Mostrado abaixo está a resposta à solicitação de curl acima.
{ "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 excluir seus aplicativos exagerados, execute o comando curl abaixo.
curl -- location -- request DELETE 'https: //YOUR_LAMBDATEST_USERNAME:[email protected]/app/delete'
-- header 'Content-Type: application/json'
-- data - raw ' {
"appIds" : "APPID1,APPID2"
} 'Mostrado abaixo está a resposta à solicitação de curl acima.
{ "message" : "Deleted successfully." }Isso é tudo! Caso você tenha alguma dúvida ou precise de informações adicionais, poderá entrar em contato com nosso suporte de bate -papo 24x7 ou enviar -nos diretamente em [email protected].
O Lambdatest oferece uma grade de automação de Appium on -line para executar a automação de aplicativos. A grade on -line de Appium está disponível em grade local, navegador, saucelabs e lambdatest. Portanto, você pode migrar sem esforço seus scripts atuais de automação de Appium (ou suítes) de grade local, laboratórios de molho ou navegador para Lambdatest.
Nesta documentação, analisamos como aproveitar o Lambdatest Cloud para automação de aplicativos e migrar seus scripts de teste (ou suítes de teste) da grade local, laboratórios de molho ou navegador. Você pode usar os recursos desejados da Lambdatest em seus testes, autenticar sua sessão de teste e executar testes na nuvem.
Migrar sua grade local atual, BroweSeStack ou Molho Labs Testes para Lambdatest requer alguns ajustes no seu código. Neste guia, veremos como aproveitar os recursos desejados da Lambdatest em seus testes, autenticar sua sessão de teste e executar testes em nossos navegadores de nuvem.
Para passar da grade local, BroweSeStack ou Molho Labs para Lambdatest, você precisa fazer algumas alterações em seus conjuntos de testes, como autenticação, recursos desejados etc.
Em primeiro lugar, você precisa alterar a autenticação nas configurações do seu conjunto de testes. Para executar os testes na grade Lambdatest Appium, você precisa ter um user_name válido e access_key para executar testes em nossa grade de nuvem. Caso você não tenha uma conta no Lambdatest, visite a página de inscrição Lambdatest e crie uma nova conta.
A seguir, são apresentadas as alterações nos parâmetros:
Você pode encontrar o Username e Access Key na seção Lambdatate Profile do painel de automação .

Ao migrar do BrowSerstack ou Saucelabs para Lambdatest, você precisa fazer as seguintes alterações no código existente:
Aqui está uma comparação lado a lado de cada um dos campos que destacamos acima:
| Propriedade | Tipo | Browserstack | Saucelabs | Lambdatest |
|---|---|---|---|---|
| Nome de usuário | Corda | Nome de usuário para acessar Appium Grid no Browserstack | Nome de usuário para acessar a Appium Grid nos laboratórios de molho | Nome de usuário para acessar a grade de appium no lambdatest |
| AccessKey | Corda | AccessKey para acessar Appium Grid no navegador | AccessKe | AccessKey to Access Appium Grid no Lambdatest |
| URL do hub | Corda | @hub cloud.browserstack.com/wd/hub | ondemand.us-west-1.saucelabs.com/wd/hub | @hub.lambdatest.com/wd/hub |
Para uma implementação baseada em Python, aqui estão as alterações no script para o processo de autenticação.
Browserstack
userName = "BrowserStack_UserName"
accessKey = "BrowserStack_AccessKey"Saucelabs
userName = "SAUCE_USERNAME"
accessKey = "SAUCE_ACCESS_KEY"Lambdatest
userName = "LambdaTest_UserName"
accessKey = "LambdaTest_AccessKey"Agora você deve modificar o URL do hub nas configurações de configuração do seu conjunto de testes. O URL do hub é do tipo string e especifica o local do hub no qual os testes do Appium serão roteados para execução.
Para uma implementação baseada em Python, aqui estão as alterações no script para o URL do hub.
Browserstack
@hub-cloud.browserstack.com/wd/hub
Saucelabs
@ondemand.us-west-1.saucelabs.com/wd/hub
Lambdatest
@mobile-hub.lambdatest.com/wd/hub
O gerador de recursos permite especificar os recursos desejados (ou recursos), que são opções de configuração que permitem especificar o seguinte:
Você também pode selecionar outras opções avançadas disponíveis no gerador de recursos mais Lambdatest.
Para a migração, fizemos testes de Appium baseados em Java. Abaixo estão as capturas de tela do gerador de capacidade do BrowSerstack e Lambdatest.



A comparação dos recursos gerados pelo BrowSerstack e Lambdatatest Capacity Gerator:
| Recursos | Browserstack | Saucelabs | Lambdatest |
|---|---|---|---|
| Dispositivo | dispositivo | deviceName | deviceName |
| Sistema operacional | OS_VERSION | PlatformVersion | PlatformVersion |
A seguir, é apresentada uma visão geral da comparação dos recursos desejados para a língua 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 );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" ) ;Vamos procurar um exemplo que mostre todo o processo de migração. O cenário de teste é abrir um aplicativo da Wikipedia que pesquise no termo 'lambdatest'. O teste a seguir é executado no Google Pixel 3 em execução 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 ()A maioria da implementação, como mostrado acima, permanece inalterado. Somente as alterações na infraestrutura são feitas (ou seja, em vez do BrowSerstack, os testes de automação de aplicativos serão executados no Lambdatest).
Vamos analisar o que mudou do ponto de vista da implementação.
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 )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 )Discutimos como migrar dos laboratórios de molho ou do Browserstack para Lambdatest. Vamos explorar como migrar da grade local para a grade de Appium baseada em nuvem.
Os recursos desejados da Appium são uma coleção de pares de valor-chave envoltos em um objeto JSON. Esses pares de valor-chave solicitam o servidor Appium para a sessão de automação de teste necessária.
Digamos que você queira executar um teste de aplicativo no Python no Samsung Galaxy Tab S4 Running Android 10. Você pode definir o mesmo na forma de capacidade, conforme abaixo.
caps = [
{
"deviceName" : "Galaxy Tab S4" ,
"platformName" : "Android" ,
"platformVersion" : "10" ,
"build" : "Demo" ,
},
]Para começar, altere a autenticação nas configurações do seu conjunto de testes. Para executar os testes no Lambdatest Appium Grid, você precisa de um nome de usuário válido e uma chave de acesso. Se você já estava realizando testes em sua grade local, precisará modificar seu script de teste para inicializar um driver Appium junto com os recursos desejados.
Passe os recursos para @hub.lambdatest.com/wd/hub com seus detalhes de autenticação lambdatest e você terminou. Aqui está o script de teste Python de amostra.
#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 ()Isso é tudo! Caso você tenha alguma dúvida ou precise de informações adicionais, poderá entrar em contato com nosso suporte de bate -papo 24x7 ou enviar -nos diretamente em [email protected].
Visite os links a seguir para saber mais sobre os recursos, configuração e tutoriais da Lambdatest sobre a automação de testes, testes de aplicativos móveis, testes responsivos e testes manuais.
A comunidade Lambdatest permite que as pessoas interajam com os entusiastas da tecnologia. Conecte, faça perguntas e aprenda com as pessoas que conhecem a tecnologia. Discuta as melhores práticas em desenvolvimento da web, testes e DevOps com profissionais de todo o mundo?
Para se manter atualizado com os recursos mais recentes e complementos de produtos, visite Changelog
O Lambdatest é uma plataforma líder de execução e orquestração de teste que é rápida, confiável, escalável e segura. Ele permite que os usuários executem testes manuais e automatizados de aplicativos web e móveis em mais de 3000 navegadores diferentes, sistemas operacionais e combinações de dispositivos reais. Usando o Lambdatest, as empresas podem garantir um feedback mais rápido do desenvolvedor e, portanto, alcançar mais rápido, vá ao mercado. Mais de 500 empresas e 1 milhão de usuários em mais de 130 países dependem do Lambdatest para suas necessidades de teste.
