Neste artigo, quero compartilhar minha experiência na solução do problema de iniciar o teste automatizado de um aplicativo móvel no Android.
O que vou dizer sobre:
- Como executar um ambiente de teste automatizado usando o Appium
(PC OS - Windows 10) - Como evitar alguns erros que ocorrem ao tentar executar testes em um aplicativo híbrido
- Alguns comandos básicos para executar os testes mais simples. Vamos usar Java e JavaScript
Desafio
Automatize o teste de aplicativos móveis híbridos.
Sobre o aplicativo a ser testado:
Talvez estes sejam os pontos principais que influenciaram a configuração do PC para executar os testes.
Ambiente de teste
Usaremos o Appium como uma ferramenta de teste automatizada.
Em resumo, esta é uma ferramenta que permite usar o servidor para enviar comandos ao cliente o que fazer e por quê.
Você pode obter informações completas no site
do desenvolvedor .
Vamos começar.
Em um local conveniente para você no disco, crie a pasta “Appium automation”.
Por exemplo:
C:\Appium automation
Mais adiante nesta pasta (C: \ Appium automation) crie mais algumas pastas:
Se algum dos aplicativos / componentes que você instalou, siga as instruções para entender a lógica do relacionamento, ou seja, não é necessário reinstalar tudo.
Preenchendo pastas criadas e carregando outros componentes
1. Java SDK
Siga o link e clique em Download:

Em seguida, chegamos à página de download de diferentes sistemas operacionais, como Eu tenho o Windows 10 x64, selecione:

Após baixar o arquivo, abra-o e descompacte o arquivo .exe-shnik (selecione o caminho durante a instalação) para a pasta:
C:\Program Files\Java\jdk-12.0.1
(o número da versão no momento do download pode variar)2. Android Studio e Android SDK
Para baixar,
siga o link .
Instale na pasta:
C:\Appium automation\Android Studio
Durante o primeiro lançamento do Android Studio, você precisará
configurar o programa :
- Tipo de instalação selecione Custom, clique em Next
- Escolha um tema que você gosta, clique em Avançar
- Local do SDK do Android, especifique C: \ Appium automation \ Android SDK, clique em Avançar
- As configurações do emulador podem ser deixadas em Recomendado, clique em Avançar
- Clique em Concluir e aguarde a conclusão do processo de instalação.
Crie um novo projeto no Android Studio:- Clique em Iniciar um novo projeto do Android Studio
- Indique o Nome, Caminho para o seu projeto ou você não pode alterar nada e deixar o proposto, clique em Avançar
- Na lista suspensa Telefone e tablet, selecione "API 23: Android 6.0 (Marshmallow), clique em Avançar.
- Escolha Atividade vazia, clique em Avançar
- Clique em Next
- Clique em Concluir
Instale as ferramentas do SDKNo Android Studio, selecione Ferramentas - Gerenciador de SDK.
Na janela exibida, a seção Android SDK será selecionada.

Na guia Plataformas SDK, selecione a versão do Android na qual você realizará os testes.
E, nas Ferramentas do SDK, selecione os itens:
- Ferramentas de compilação do SDK do Android
- Emulador Android
- Ferramentas da plataforma SDK para Android
- Ferramentas do SDK para Android
- Documentação para Android SDK
- Repositório de suporte
Clique em Aplicar ou Ok e aguarde o download e a instalação dos componentes para concluir.

3. Crie variáveis PATH
Clique com o botão direito do mouse em “Meu Computador” - “Propriedades” - “Configurações Avançadas do Sistema”.
Na janela que se abre, na guia "Avançado", selecione "Variáveis de ambiente ..."
No bloco "Variáveis do sistema", crie uma nova variável.

Primeira variávelNome da variável - JAVA_HOME
O valor da variável é
C:\Program Files\Java\jdk-12.0.1
(o caminho em que você instalou o jdk na etapa 1, em alguns casos, pode ser que a pasta Arquivos de Programas seja chamada Arquivos de Programas (x86))
Segunda variávelNome da variável - ANDROID_HOME
O valor da variável é
C:\Appium automation\Android SDK
Adição de variável de caminhoEncontre a variável Path na lista de variáveis do sistema e clique em "Change ...".
Clique em "Criar" na janela que aparece e adicione as variáveis:
- % ANDROID_HOME% \ emulador
- % ANDROID_HOME% \ ferramentas da plataforma
- % ANDROID_HOME% \ tools
- % ANDROID_HOME% \ tools \ bin
Como resultado, você deve obter 4 novas variáveis, após as quais precisa clicar em OK.

4. Appium
Download Appium:- Seguimos o link http://appium.io/
- Clique em Download
- Selecionamos Appium-windows-1.13.0.exe (o número da versão no momento do carregamento pode variar)

Execute o arquivo .exe baixado e instale o Appium no seu PC. Durante o processo de instalação, você precisará escolher instalar globalmente ou para um usuário específico. Eu instalei globalmente desde isso não importa para mim.
Fazendo o download das bibliotecas do Appium:
Mova o arquivo .jar baixado para a pasta
C:\Appium automation\Appium Lib

Mova o arquivo .jar baixado para a pasta:
C:\Appium automation\Appium Lib

Mova o arquivo .jar baixado para a pasta:
C:\Appium automation\Appium Lib
Faça o download das bibliotecas do Selenium:
Descompacte o arquivo baixado na pasta:
C:\Appium automation\Selenium Lib
5. IntelliJ IDEA Community Edition
Para fazer o download, acesse o link
https://www.jetbrains.com/idea/downloadPróximo à versão Community e clique em Download (esta é uma versão gratuita, mas é suficiente para testes automáticos).
A página de download tem uma comparação das versões Community e Ultimate.
Se você deseja comprar a versão Ultimate, pode fazê-lo com segurança! Mas, mais uma vez, a versão comunitária será suficiente.
Execute o arquivo .exe baixado e instale (basta clicar em Avançar até o programa iniciar a instalação)
Primeiro lançamento do IntelliJ IDEA- Selecione "Não importar configurações"
- Aceitamos o contrato de licença
- Escolha um tópico
- Clique em Next
- Clique em Iniciar usando o IntelliJ IDEA
Criando um projeto no IntelliJ IDEA- Escolha Criar novo projeto
- Especifique o caminho para o Java SDK
- Clique em Novo ...
- Especifique o caminho para o Java SDK C carregado anteriormente: \ Arquivos de Programas \ Java \ jdk-12.0.1
- Clique em Next
- Marque a caixa "Criar projeto a partir do modelo"
- Clique em Next
- Especifique o nome e o local do projeto para salvar
- Clique em Concluir
Configurações para o projeto criadoEscolha Arquivo - Estrutura do projeto ...
Na janela exibida, selecione Módulos - Dependências - “+” - JARs ou diretórios ...

E adicionamos ao projeto todas as bibliotecas carregadas anteriormente.

Clique em OK
Agora o projeto está pronto para executar testes.
6. configuração do dispositivo Android
Dispositivo realVocê precisa de um cabo USB para conectar o dispositivo ao computador e ao próprio smartphone.
Para começar, vá para "Configurações" - "Sobre o telefone" no smartphone.
Além disso, em smartphones diferentes, tudo é diferente, mas o essencial é que você precisa encontrar o “Número de série” e clicar nele 5-7 vezes até que a torradeira apareça “Agora você é um desenvolvedor” (o texto da notificação pode ser diferente de modelo para modelo)
Após essa manipulação, a seção "Para desenvolvedores" aparecerá nas configurações do seu telefone. Também pode ocultar de modelo para modelo em seções diferentes, por exemplo, em algum lugar em "Configurações" - "Para desenvolvedores" e em algum lugar em "Configurações" - "Recursos especiais" - "Para desenvolvedores" etc. .
Você precisa ir para a seção "Para desenvolvedores" e ativar a "Depuração USB".
Ao conectar seu smartphone via USB, você verá uma mensagem sobre a permissão de depuração USB, pode marcar “Confiar neste dispositivo” e clicar em “OK”; essa mensagem não aparecerá novamente na próxima vez que o telefone for conectado a este PC.
Todo o seu smartphone está pronto para funcionar em testes automáticos.
Dispositivo virtualVocê também pode criar um dispositivo virtual através do Android Studio e não precisará conectar o dispositivo real ao computador.
Mas em um dispositivo virtual, os testes podem funcionar mais lentamente do que em um dispositivo real.
Para criá-lo, abra o Android Studio e, em seguida:
- “Ferramentas” - “AVD Manager” - “+ Criar dispositivo virtual ...”
- Escolha um dispositivo, clique em Avançar
- Escolha a versão desejada do Android, clique em Avançar
- Especifique o nome do dispositivo, clique em Concluir
Após as manipulações feitas na seção “Ferramentas” - “AVD Manager”, você verá o dispositivo criado. Usando o ícone verde "Play", você pode iniciar o dispositivo.
Como verificar se o seu PC viu o dispositivo conectado?Execute a linha de comando (“Iniciar” - “Utilitários - Windows” - “Prompt de Comando”)
E insira o comando adb devices.
Como resultado, se o dispositivo estiver conectado com a função “USB Debugging” ativada, você receberá o dispositivo conectado e seu UDID (número de série):
List of devices attached UDID device
7. Estamos escrevendo um projeto
Adicionar importação. package name; import java.util.*; import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.android.AndroidElement; import io.appium.java_client.remote.MobileCapabilityType; import org.openqa.selenium.*; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.JavascriptExecutor; import java.net.MalformedURLException; import java.net.URL; import java.util.concurrent.TimeUnit;
Registramos o servidor e para onde ele deverá enviar solicitaçõesInstale o driver Android:
AndroidDriver<AndroidElement> driver = null;
Definimos os parâmetros (propriedades):
DesiredCapabilities capabilities = new DesiredCapabilities();
O nome do dispositivo (você pode encontrá-lo para o dispositivo real em "Configurações" - "Sobre o telefone" e para o virtual "Ferramentas" - "AVD Manager" - o campo "Nome"):
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "MyPhone");
Link para o APK que precisará ser iniciado (.apk deve ser uma compilação de depuração para que você e o appium possam inspecionar aplicativos):
capabilities.setCapability(MobileCapabilityType.APP, "C:\\Appium automation\\APK\\My-debug-Apk.apk");
Inicie o Appium Driver:
try { driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); } catch (MalformedURLException e) { System.out.println(e.getMessage()); }
Este código será suficiente para iniciar seu aplicativo no dispositivo conectado.
Equipes adicionaisPara suspender o projeto por um determinado período de tempo, por exemplo, 8 segundos. (o valor é indicado em milissegundos). Pode ser necessário se você precisar esperar a página ou o aplicativo carregar:
Thread.sleep(8000);
Temos o ContextHandles, onde entendemos com o que estamos trabalhando agora (NATIVE_APP ou WEBVIEW):
Set<String> contextNames = driver.getContextHandles(); for (String contextName : contextNames) { System.out.println(contextName); }
Atribua contexto ao último valor recebido na matriz. Isso permitirá que você alterne corretamente para WEBVIEW, tk. Contexto padrão = NATIVE_APP:
driver.context((String) contextNames.toArray()[contextNames.toArray().length - 1]);
Nós controlamos a interface do aplicativoPorque estamos trabalhando com um aplicativo híbrido, ou seja, elementos de aplicativo são renderizados em WEBVIEW, e não em NATIVE_APP, na maioria das vezes teremos que usar um tipo de pesquisa para o elemento findElementByCssSelector.
Clique no botão OK:
driver.findElementByCssSelector(".button-ok").click();
- onde .button-ok é a classe do elemento. Você também pode usar o ID do elemento exatamente.
Enviamos o valor no campo, por exemplo, você tem uma pesquisa e deseja enviar o valor "Cinema" para lá.
driver.findElementByCssSelector(".search-input").sendKeys("");
Clique para encontrar:
driver.findElementByCssSelector(".search-button").click();
Dessa forma, você já pode controlar seu aplicativo.
Mais cedo ou mais tarde, você descobrirá que nem todo o conteúdo é colocado na tela do smartphone, ou seja, você precisa rolar. Se um elemento não estiver visível na tela durante o processo de teste, o Appium emitirá um erro que não vê o elemento e, provavelmente, todos os testes adicionais serão cobertos por erros.
Para rolar na tela, você pode executar a função JS scrollIntoView em Java.
((JavascriptExecutor) driver).executeScript("document.querySelector('.button-ok').scrollIntoView({block: \"end\", behavior: \"smooth\"});");
No meu caso, isso permitirá que você desça para o botão OK.
Pode ser um incidente que você meio que escreveu tudo corretamente, mas a rolagem não é executada.
Tente vincular-se a outros elementos na tela e, primeiro, é melhor fazer isso por meio do console no Chrome - Inspecione, para garantir que você entenda que, quando vincular a esse elemento, a rolagem funcionará.
Você pode ir para a etapa 8 e, se tudo funcionar para você, isso é ótimo!
Mas eu tive outra armadilha.
O nome dele é Crosswalk Browser.
Quando iniciei o projeto, constantemente cometi um erro:
“Make sure the app has its webview configured for debugging”
Isso significa que não foi realizado nenhum teste.
O que você precisa verificar neste caso:
- verifique se você tem uma compilação de depuração
- verifique se a compilação de depuração permite que o Inspect-a application
- instalar chromedriver fixo
Após essas manipulações, adicione outros recursos ao seu projeto.
capabilities.setCapability("chromedriverExecutable", "C:\\node_modules\\appium-with-crosswalk-fix\\chromedriver\\2.28\\chromedriver.exe");
- em que C: \\ node_modules \\ appium-crosswalk-fix \\ chromedriver \\ 2,28 \\ chromedriver.exe
este é o caminho para o chromedriver fixo
Portanto, seu projeto ficará assim: package name; import java.util.*; import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.android.AndroidElement; import io.appium.java_client.remote.MobileCapabilityType; import org.openqa.selenium.*; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.JavascriptExecutor; import java.net.MalformedURLException; import java.net.URL; import java.util.concurrent.TimeUnit; public class Main { public static void main(String[] args) throws InterruptedException { AndroidDriver<AndroidElement> driver = null; DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "MyPhone"); capabilities.setCapability(MobileCapabilityType.APP, "C:\\Appium automation\\APK\\My-debug-apk.apk"); capabilities.setCapability("chromedriverExecutable", "C:\\node_modules\\appium-with-crosswalk-fix\\chromedriver\\2.28\\chromedriver.exe"); try { driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); } catch (MalformedURLException e) { System.out.println(e.getMessage()); } Set<String> contextNames = driver.getContextHandles(); for (String contextName : contextNames) { System.out.println(contextName); } driver.context((String) contextNames.toArray()[contextNames.toArray().length - 1]); Thread.sleep(8000); driver.findElementByCssSelector(".search-input").sendKeys(""); driver.findElementByCssSelector(".search-button").click(); }
Tal projeto:
- Instale seu aplicativo no dispositivo.
- Encontre o campo de pesquisa na página do aplicativo
- Trará lá o significado de "Cinema"
- Clique no botão "Pesquisar"
8. Começamos o projeto
Existem vários pontos principais para um projeto iniciar:
- Iniciar servidor Appium (item 4)
- Use o atalho para iniciar o Appium
- Clique em "Iniciar servidor"
- Conecte o dispositivo a um PC ou inicie um dispositivo virtual (item 6)
- Monte um projeto (p. 5 e p. 7)
- Clique em Executar (ou na barra de ferramentas do IntelliJ IDEA ou em Executar - Executar 'Principal')
- Aprecie o resultado
Bem, então você está livre para testar as configurações, as informações necessárias estão no site oficial do
desenvolvedor .
O Appium também pode ser usado para testar aplicativos iOS.
Eu queria escrever brevemente, mas acabou como sempre.
Obrigado a todos que leram até o final, espero que tenha sido útil para você!