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 .
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