Mensagens

A mostrar mensagens de setembro, 2019

Comparing com method reference

Mude o lambda que você escreveu no método  comparing  para um method reference. O código atual é esse: palavras . sort ( Comparator . comparing ( s -> s . length ())); Nosso código fica assim: palavras . sort ( Comparator . comparing ( String :: length )); A vantagem pode ser legibilidade. Nosso código fica ainda mais enxuto. Mais importante ainda é perceber que a inferencia de tipo é mais forte, já que explicitamente estamos dizendo que o método  length  pertence a  String . <<Alura.com.br>>

Lambda -> ::

Modifique a forma que estamos fazendo o  sort  das palavras utilizando o  Comparator.comparing() . O código atual está assim: palavras . sort (( s1 , s2 ) -> { return Integer . compare ( s1 . length (), s2 . length ()); }); Uma possível solução é: palavras . sort ( Comparator . comparing ( s -> s . length ())); <<Alura.com.br>>

BreakPoint

Utilize o modo Debug para poder verificar onde encontram-se os erros no seu código. Insira os breakpoints nos métodos que você acredita que o código irá quebrar. Vá avançando com o "F6", e quando quizer entrar no método avance com o "F5", e se quiser pular para o próximo breakpoint avance com o "F8"

Git - Comandos Básicos

Criando um novo repositório: Crie uma nova pasta, abra-a e execute o comando - git init Obtenha um repositório: Crie uma cópia de trabalho em um repositório local executando o comando - git clone /caminho/para/o/repositório Quando usar um servidor remoto, seu comando será - git clone usuário@servidor:/caminho/para/o/repositório Fluxo de trabalho: Seus repositórios locais consistem em três "árvores" mantidas pelo git: .Working Directory - que contém os arquivos vigentes.  .Index - que funciona como uma área temporária .HEAD - que aponta para o último commit (confirmação) que você fez. Adicionar & Confirmar: Você pode propor mudanças (adicioná-las ao Index) usando git add <arquivo> git add * Este é o primeiro passo no fluxo de trabalho básico do git. Para realmente confirmar estas mudanças (isto é, fazer um commit), use git commit -m "comentários das alterações" Agora o arquivo é enviado para o HEAD, mas ainda não para o repositór...

Criando um Device no Android Studio

Imagem
Primeiramente abra seu Android Studio e siga os passos abaixo:  AVD MANAGER; CreateVirtual Device; Escolha a definição do Device e clique em próximo ou next; Escolha a versão do Device e clique em próximo ou next; Finish. Lista de devices criados:

Executar o simulador Android pelo Prompt

Imagem
Com as variáveis de ambiente configuradas, basta abrirmos o prompt de comando, e dar os seguintes comandos: Obs.: considerando que você já tenha criado um device no Android Studio.

Variáveis de Ambiente

Imagem
Configure o seu path: %NODE_HOME%;%ANDROID_HOME%\tools;%ANDROID_HOME%\tools\bin;%ANDROID_HOME%\platform-tools;%JAVA_HOME%\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files\Git\cmd;C:\Program Files (x86)\Common Files\Oracle\Java\javapath";C:\Program Files\nodejs\ Crie o %ANDROID_HOME%; Crie o %JAVA_HOME%.

O que é o Desired Capabilities?

O que é o Desired Capabilities? É um conjunto de chaves e valores em um objeto JSON, enviados do Appium Cliente para o Appium Servidor, quando uma nova automação é requerida. Basicamente o Appium trabalha com a arquitetura Cliente-Servidor. { “deviceName”: “NomedoCelular ou qualquer nome, por boa prática identificamos com o nome do celular”. “platformName”: “Android ou iOS, plataforma utilizada”. “app” : “Caminho do seu aplicativo na automação”. “appPackage” : “Pacote do Java que você deseja rodar no Android ”. “appActivity” : “Nome da atividade que você deseja iniciar a partir do pacote do Android”. “newCommandTimeout”:“O tempo de espera do Appium dos comandos executados”. }

AppPackage e AppActivity

Imagem
Como descobrir o valor do AppPackage e AppActivity: Primeiramente o device deve estar conectado, com o comando "adb devices" é possível verificar se há algum device conectado. Após essa validação é necessário dar o comando "adb shell" e após isso dar o comando: dumpsys window windows | grep -E 'mCurrentFocus'

initElements

Imagem
Antes de iniciar os elementos como o: @AndroidFindBy(id = "teste") private MobileElement teste; É necessário inicializar os elementos com o método: public void carregarTelaInicial() { PageFactory.initElements(new AppiumFieldDecorator(getMobileDriver()), this); waitElementsToBeVisible(cabecalhoInicial, rezar);

Appium - inspecionar elementos

Imagem
Essa é a tela inicial do Appium: Vamos dar o start no Appium e clicar em inspecionar elemento: Clicar em Start Session:

Xpath

Uma ótima forma de mapear um elemento é utilizando o Xpath. De uma forma genérica podemos usar o seguinte. @AndroidFindBy(xpath = "//*[contains(@text, 'login')]") private MobileElement login;

Mapeando Elementos Móbile (Android)

Imagem
Eu acho que a melhor forma atualmente para mapear os elementos android é com o Uiautomatorviewer Para utilizar o uiautomatorviewer, precisamos ter instalado o AndroidStudio e criar um device. Depois disso, se as Variavéis de Ambiente estiverem configuradas corretamente, basta dar o comando: "uiautomatorviewer":

Formas de usar a tag @AndroidFindBy

Imagem
A tag @AndroidFindBy, é muito facil de se utilizar. Basta dar o comando Ctrl + Spaço e o eclipse irá lhe mostrar todas as opções de mapeamento:

Exemplo de Page

Imagem
Existe uma forma muito pratica de mapear elementos. É muito simples, basta escrever a tag @AndroidFindBy

Node.js

Imagem
Entre neste site para fazer o download do NodeJS: https://nodejs.org/en/download/ Iremos usá-lo para poder instalar o Appium e assim fazer com que ele rode automaticamente nos testes. Após baixar e instalar o Node, vá para a pesquisa do windows e escreva Node, observe que deverá aparecer o aplicativo do Node.js e o Node.js command prompt. Excelente, clique no node command. Deverá abrir a tela do Prompt: Escreve este comando para instalar a versão mais recente do Appium: npm install -g appium após pressionar o enter o appium começará a ser baixado: Pronto você instalou o appium pelo node com o comando npm. Agora a classe de teste com a inicialização automatica do appium deverá funcionar.

Configurando Hooks

Imagem
A classe Hooks é chamada antes que o teste começe. Por isso é importante criar nesta classe os metodos para abrir e fechar o aplicativo. Note que neste caso, também inclui o metodo para abrir o appium automaticamente.(Mas para isso antes é preciso ter baixado o Node.Js e fazer o download do aapium por ele. Mas isso fica pra outra hora.) Observe que a tag @Before realiza todos os comandos antes de iniciar o teste, e a tag @After realiza os comandos depois que o teste terminou: Para chamar esse método de iniciar o appium automaticamente, primeiro você deve criar uma classe como essa:

Configurando o POM

Imagem
Para configurar o POM de um projeto básico de automação móbile, levando em consideração que você tenha criado um projeto Maven. Basta que seu Pom contenha uma estrutura como essa, que após fazer o build do projeto, tudo estará ok:

Exemplos de Features - Cucumber

Imagem
Para criar uma feature com cucumber primeiramente você precisa criar um arquivo file: Para criar uma feature, temos sempre que por após o nome desejado um ".feature", como segue no exemplo: Após salvar o arquivo file com a extensão .feature, o cucumber irá gerar automaticamente um exemplo  de como deverá ser esrito a história: Ao rodar a feature criada com o cucumber, e verificar no console, verá que o cucumber criou a estrutura do Step, você só precisará incluir o código com as validações desejadas.

Configurando Cucumber Option

CucumberOptions, é essencial saber configurar essa classe para rodar os casos com Cucumber. package configuracoes; import org.junit.runner.RunWith; import cucumber.api.CucumberOptions; import cucumber.api.junit.Cucumber; @RunWith(Cucumber.class) @CucumberOptions( features = "classpath:features", glue = {"classpath:steps", "hooks"}, monochrome = true, dryRun = false, strict = false, tags = {"@Login" }) public class RunnerAutomation { }

Configurando o Capabilities

Aqui esta uma forma de configurar o capabilities com uma opção de Android e IOS: package configuracoes; import static io.appium.java_client.touch.WaitOptions.waitOptions; import static java.time.Duration.ofSeconds; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; import java.util.List; import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.Dimension; import org.openqa.selenium.WebElement; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; import io.appium.java_client.AppiumDriver; import io.appium.java_client.MobileElement; import io.appium.java_client.TouchAction; import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.functions.ExpectedCondition; import io.appium.java_client.ios.IOSDriver; import io.appium.java_cl...

Automação Móbile - Ferramentas Necessárias

Olá pessoal. Primeiramente vamos precisar ter instalado algumas ferramentas para começarmos a automatizar móbile.(Android... pois ainda não tenho um Mac para automatizar IOS...kkk) Obs.: Estaremos usando a linguagem Java, que apesar de muitos não gostarem, é a mais utilizada atualmente no mercado...:) Segue a lista: - Eclipse( https://www.eclipse.org/downloads/download.php?file=/oomph/epp/2019-06/R/eclipse-inst-win64.exe ); - Java( https://www.oracle.com/technetwork/pt/java/javase/downloads/jdk8-downloads-2133151.html ); - Appium( http://www.automationtestinghub.com/download-and-install-appium-1-6/ ); - Android Studio( https://developer.android.com/studio/index.html?hl=pt-br ); - Git( https://git-scm.com/downloads );