Testando aplicativos Android usando selenoid. Pesquisar local em um aplicativo móvel usando o Appium

Eu sou da Luxoft.
Prefácio da postagem :


O Selenoid é um programa que permite controlar navegadores e emuladores Android usando drivers especiais. Capaz de executar cada um deles isoladamente no contêiner do Docker.


A idéia principal do Selenoid é iniciar um novo contêiner para cada sessão (iniciar um novo navegador ou emulador) e pará-lo imediatamente após o fechamento da sessão.


O Selenoid permite manter uma carga alta sem custos adicionais de recursos.


Este post iniciará testes simples em um emulador do Android .


Preparação


Verifique primeiro se o seu sistema pode executar máquinas virtuais.


A virtualização de hardware deve ser suportada pelo seu processador. Isso significa que são necessárias extensões de processador IntelVT ou AMDV. Para verificar se o processador suporta um destes, execute o comando:


egrep '(vmx|svm)' /proc/cpuinfo 

Docker


O Docker deve estar instalado e em execução no seu sistema operacional.


Instale o Selenoid


Se você possui um sistema operacional baseado em Redhat, pode usar meu repositório para instalar o Gerenciador de Configuração .


 yum -y install yum-plugin-copr yum copr enable antonpatsev/aerokube-cm-rpm yum -y install aerokube-cm 

Se você não possui um sistema operacional baseado em Redhat, pode fazer o download e usar o binário do Configuration Manager .


Executando o Selenoid usando o Gerenciador de Configuração e criando browsers.json


Se você não tiver acesso direto às imagens da Internet e da janela de encaixe, baixe o registro:


 aerokube-cm selenoid start --force --browsers "android:6.0;chrome:78" --args "-session-attempt-timeout 2m -service-startup-timeout 2m" --registry -docker-registry 

Se você tem acesso direto à Internet.


 aerokube-cm selenoid start --force --browsers "android:6.0;chrome:78" --args "-session-attempt-timeout 2m -service-startup-timeout 2m" 

A chave --args "-session-attempt-timeout 2m -service-startup-timeout 2m" necessária se você tiver um apk grande instalado por um longo tempo.


A --force substitui o arquivo browsers.json


Como o gerenciador de configuração do Selenoid ainda não sabe como configurar o browsers.json para o Chrome para dispositivos móveis, é necessário corrigi-lo.


Por padrão, browsers.json é gerado no diretório ~ / .aerokube / selenoid.


O arquivo browsers.json resultante para testar aplicativos Android e Chrome dentro do emulador Android.


 { "android": { "default": "6.0", "versions": { "6.0": { "image": "docker-registry:443/selenoid/android:6.0", "port": "4444", "path": "/wd/hub" } } }, "chrome": { "default": "mobile-75.0", "versions": { "mobile-75.0": { "image": "docker-registry:443/selenoid/chrome-mobile:75.0", "port": "4444", "path": "/wd/hub" } } } } 

Até agora, a versão para dispositivos móveis do Chrome está por trás da versão regular do Chrome.
Faça o download da imagem do Chrome para dispositivos móveis


 docker pull selenoid/chrome-mobile:75.0 

Alterando browsers.json


Ao alterar o arquivo browsers.json, o selenoid precisa ser recarregado


 aerokube-cm selenoid stop 

 aerokube-cm selenoid start 

Recarregando configuração
Você pode fazer uma configuração de Recarregamento. Detalhes no link:
https://aerokube.com/selenoid/latest/#_reloading_configuration


Verifique se o contêiner do docker foi iniciado e se as imagens foram baixadas.


 docker ps docker images 


Executando a interface do usuário do Selenoid usando o Gerenciador de configuração


 aerokube-cm selenoid-ui start --registry https://docker-registry 

Ou


 aerokube-cm selenoid-ui start 

Verifique se o contêiner do docker foi iniciado e se as imagens foram baixadas.


 docker ps docker images 


Vá para selenoid-ui em ip-where-run-selenoid-and-selenoid-ui: 8080


Você deve ter 2 luzes CONNECTED verdes acesas e escritas em android e chrome.



Para acessar o Android a partir do sistema host, adicione as seguintes linhas ao arquivo / etc / hosts:


 ip-- hypervisor 

Teste de demonstração


Faça o download https://github.com/aerokube/demo-tests


Nos três arquivos java, altere o caminho no RemoteWebDriver para hypervisor (é necessário alterar a captura de tela).



ou para outro endereço onde você iniciou o selenóide.


No arquivo AndroidRemoteApkTest.java, altere o caminho em que você pode baixar o APK.


 device.setCapability("app", "http://ci.example.com/game2048.apk"); 

em


device.setCapability ("app", " http: // link para o seu apk ");


ou


 device.setCapability("app", "http://hypervisor:8000/game2048.apk"); 

Se você se referir ao host local da janela de encaixe, receberá este erro, pois está tentando acessar o host local do servidor principal a partir da rede da janela de encaixe:


 Tests in error: browserTest(com.aerokube.selenoid.AndroidRemoteApkTest): An unknown server-side error occurred while processing the command. Original error: Problem downloading app from url http://localhost:8000/apk/game2048.apk: connect ECONNREFUSED 127.0.0.1:8000 

Como disponibilizar para download seus arquivos locais será menor.


No arquivo DemoTest.java, adicione setCapability para executar o chrome no Android e obter algo assim.



Em cada arquivo java, você pode ativar ou desativar a gravação de vídeo, a visualização ou o gerenciamento remoto via VNC e o registro em um arquivo. Para desativar a opção, você precisa adicionar duas barras no início da linha.



Para disponibilizar arquivos do diretório atual para download, você pode executar o serviço static-server-in-dir no console atual:


 yum -y install yum-plugin-copr yum copr enable antonpatsev/static-server-in-dir yum -y install static-server-in-dir cd to directory static-server-in-dir start         8000   static-server-in-dir stop 

Executando testes


No diretório demo-tests, execute os testes:


Se você precisar especificar configurações e usar proxies maven (Nexus, Artifactory)


 mvn -s settings.xml clean test 

Se rodarmos com acesso direto à Internet e sem nenhuma configuração


 mvn clean test 

Velocidade


O tempo total de implantação do emulador Android e o lançamento de 1 teste levam menos de 1 minuto.


Bugs conhecidos


https://github.com/aerokube/demo-tests/issues/5


Registro de teste


AndroidDemoTest.java:



AndroidRemoteApkTest.java:



DemoTest.java:



Pesquise o local desejado em um aplicativo móvel usando Appium


Appium é uma ferramenta multiplataforma, ou seja, permite que você escreva testes para plataformas móveis (iOS, Android, Windows) usando a API. Essa é uma das ferramentas mais usadas para aplicativos de teste de regressão em smartphones e tablets.


Baixe e execute o Appium


Vá para File -> New Session Window



No campo Remote host , especifique o endereço do servidor em que o Selenoid está sendo executado.


No campo Remote Port , especifique a porta na qual o Selenoid está sendo executado - geralmente 4444.


No campo Remote Path , especifique /wd/hub


Em Desired Capabiliting especifique os Capabilities necessários.


O JSON mínimo é este:


 { "browserName": "chrome", "browserVersion": "mobile-75.0", "enableVNC": true } 

Após o início da sessão, você terá esta imagem:



Agora você pode explorar / pesquisar o local necessário.



Bate-papo por telegrama:


https://t.me/aerokube - converse Aerokube


https://t.me/atinfo_chat - bate-papo para engenheiros de automação de teste

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


All Articles