Configurando o Teste Automático de um Aplicativo Híbrido

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:
PlataformaAndroid
EnquadramentoAngular, Cordova, Ionic
NavegadorFaixa de pedestres

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:
Android SDKC: \ Automação Appium \ Android SDK
Android StudioC: \ Automação Appium \ Android Studio
APKC: \ Automação de Appium \ APK
Appium libC: \ Automação do Appium \ Appium Lib
Selenium libC: \ Automação de aplicativos \ Selenium Lib

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 SDK

No 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ável

Nome 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ável

Nome da variável - ANDROID_HOME

O valor da variável é

 C:\Appium automation\Android SDK 

Adição de variável de caminho

Encontre 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/download
Pró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 criado

Escolha 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 real
Você 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 virtual

Você 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ções

Instale 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 adicionais

Para 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 aplicativo

Porque 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:


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ê!

Source: https://habr.com/ru/post/pt452742/


All Articles