Upgrade to Pro — share decks privately, control downloads, hide ads and more …

O que preciso saber sobre Java para automatizar...

O que preciso saber sobre Java para automatizar testes com WebDriver

Estes slides demonstram o conhecimento em Java necessário para começar a automatizar testes usando o framework Selenium WebDriver.

Assista o vídeo que descreve estes slides a partir da URL abaixo:
http://bit.ly/AprendaJavaParaWebDriver

Avatar for Júlio de Lima

Júlio de Lima

October 23, 2016
Tweet

More Decks by Júlio de Lima

Other Decks in Programming

Transcript

  1. Júlio de Lima [email protected] @juliodelimas Faça download em http://seleniumhq.com *

    Também está disponível na maioria das linguagens disponíveis, como C#, Ruby, Python, PHP, etc.
  2. Júlio de Lima [email protected] @juliodelimas EXEMPLO DE CÓDIGO SELENIUM WEBDRIVER

    // Configurando o driver para navegação WebDriver wd = new ChromeDriver(); wd.manage().window().maximize(); wd.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS); WebDriverWait wda = new WebDriverWait(wd, 10); // Fazendo login no QuickLoja wd.get("http://10.211.55.3:8080/quickloja/"); WebElement campoUsuario = wd.findElement(By.id("usuariologin")); campoUsuario.sendKeys("teste"); wd.findElement(By.id("usuariosenha")).sendKeys("123"); wd.findElement(By.cssSelector(".btn.btn-medium.btn-primary")).click(); // Aguardando o link ”Sair”, que representa o sucesso ao logar wda.until(ExpectedConditions.presenceOfElementLocated(By.linkText("Sair"))); // Validando que a página secreta foi apresentada String urlEsperadaAposLogin = ”http://10.211.55.3:8080/quickloja/principal”; Assert.assertEquals(wd.getCurrentUrl(), urlEsperadaAposLogin);
  3. Júlio de Lima [email protected] @juliodelimas // Isto mostraria o número

    555 no console esteEMeuNome(555); // Mostraria na tela o texto ”Priscila” ”Priscila” // Mostraria na tela o texto ”Isabelle” ”Isabelle” // Isto mostraria no console o número 30
  4. Júlio de Lima [email protected] @juliodelimas // Isto mostraria o número

    555 no console // Isto daria erro de execução, pois 555 é int e não String! esteEMeuNome(555); // Mostraria na tela o texto ”Priscila” ”Priscila” // Mostraria na tela o texto ”Isabelle” ”Isabelle” // Isto mostraria no console o número 30
  5. Júlio de Lima [email protected] @juliodelimas // Comandos para navegar para

    algum lugar // Comandos para voltar para a tela anterior // Comandos retornar o código fonte da página aberta // Comandos para atualizar a página // Comandos para fechar o navegador Chrome
  6. Júlio de Lima [email protected] @juliodelimas // Comandos para navegar …

    // Comandos para voltar para a tela anterior // Comandos retornar o código fonte da página aberta // Comandos para atualizar a página // Comandos para fechar o navegador Chrome Os atributos nome, instanciasAbertas, plugins e paginaAberta são privados, logo, só podem ser utilizados pelos métodos da classe Chrome! O atributo tituloDaJanela e os métodos da classe Chrome são públicos, logo, podem ser usados dentro e fora da classe Chrome!
  7. Júlio de Lima [email protected] @juliodelimas // Até então era apenas

    uma estrutura, mas agora teremos o objeto real
  8. Júlio de Lima [email protected] @juliodelimas // Usando um dos métodos

    ”http://google.com” // Isto mostraria o nome do navegador no console System.out.println(navegadorChrome.nome); // Apresentando o valor contido em uma propriedade navegadorChrome.tituloDaJanela
  9. Júlio de Lima [email protected] @juliodelimas // Usando um dos métodos

    ”http://google.com” // Isto mostraria o nome do navegador no console // Isto daria erro, pois o atributo ”nome” é private! System.out.println(navegadorChrome.nome); // Apresentando o valor contido na propriedade tituloDaJanela navegadorChrome.tituloDaJanela
  10. Júlio de Lima [email protected] @juliodelimas • • • • •

    • • • • • Somos todos Navegadores
  11. Júlio de Lima [email protected] @juliodelimas • • • • •

    • • • • • Somos todos Navegadores Eu Mostro Código mas não tenho suporte a Plugins
  12. Júlio de Lima [email protected] @juliodelimas • • • • •

    • • • • • Somos todos Navegadores Eu Mostro Código mas não tenho suporte a Plugins Dou suporte a Plugins mas não gosto de Mostrar nada!
  13. Júlio de Lima [email protected] @juliodelimas • • • • •

    • • • • • Sou um Navegador que possuo apenas propriedades e métodos comuns a todos!
  14. Júlio de Lima [email protected] @juliodelimas // Comandos para navegar para

    algum lugar // Comandos para voltar para a tela anterior // Comandos para atualizar a página // Comandos para fechar o navegador Chrome
  15. Júlio de Lima [email protected] @juliodelimas // Todos os métodos e

    atributos de Navegador estão aqui de forma implícita // Um método que apenas o Firefox possui // Outro método que apenas o Firefox possui
  16. Júlio de Lima [email protected] @juliodelimas // Todos os métodos e

    atributos de Navegador estão aqui de forma implícita // Um método que apenas o Firefox possui // Outro método que apenas o Firefox possui
  17. Júlio de Lima [email protected] @juliodelimas // Todos os métodos e

    atributos de Navegador estão aqui de forma implícita // Comandos para retornar o código fonte da página aberta
  18. Júlio de Lima [email protected] @juliodelimas // Todos os métodos e

    atributos de Navegador estão aqui de forma implícita // Comandos para retornar o código fonte da página aberta
  19. Júlio de Lima [email protected] @juliodelimas // Todos os métodos e

    atributos de Navegador estão aqui de forma implícita // Comandos para retornar o código fonte da página aberta // Um método que apenas o Chrome possui
  20. Júlio de Lima [email protected] @juliodelimas // Todos os métodos e

    atributos de Navegador estão aqui de forma implícita // Comandos para retornar o código fonte da página aberta // Um método que apenas o Chrome possui
  21. Júlio de Lima [email protected] @juliodelimas // Um método estático não

    depende da instanciação do Objeto. Posso chama-lo diretamente após o nome da Classe: // Mostrará ”Até mais!” // Mas também pode ser usado dentro do Objeto instanciado // Mostrará ”Olá, como vai?” // Mostrará ”Olá, como vai?” // Mostrará ”Até mais!”
  22. Júlio de Lima [email protected] @juliodelimas // Um método estático não

    depende da instanciação do Objeto: // Mostrará ”Até mais!” // Mas também pode ser usado dentro do Objeto instanciado minhasFrases.saudacao(); // Mostrará ”Olá, como vai?” // Dará erro, pois saudacao() é privado! // Mostrará ”Olá, como vai?” // Mostrará ”Até mais!”
  23. Júlio de Lima [email protected] @juliodelimas // Método que mostra o

    nome do Plugin alvo System.out.println(”Clicou em ” + alvo);
  24. Júlio de Lima [email protected] @juliodelimas // Todos os métodos e

    atributos de Navegador estão aqui de forma implícita // Comandos para retornar o código fonte da página aberta // Este método retorna o objeto PluginSeleniumIDE // Instanciando o plugin do Selenium IDE PluginSeleniumIDE psi = new PluginSeleniumIDE() // Retornando o plugin do Selenium IDE return psi;
  25. Júlio de Lima [email protected] @juliodelimas // Instanciando a classe do

    Chrome // Recebendo o objeto PluginSeleniumIDE através do uso do método pluginSeleniumIDE() da classe Chrome // Utilizando o método clicar() do PluginSeleniumIDE, ele mostrará no console o texto ”Clicou em Botão Salvar” ”Botão Salvar”
  26. Júlio de Lima [email protected] @juliodelimas // Instanciando a classe do

    Chrome // Utilizando o método clicar() do PluginSeleniumIDE, ele mostrará no console o texto ”Clicou em Botão Salvar” ”Botão Salvar” new PluginSeleniumIDE()
  27. Júlio de Lima [email protected] @juliodelimas // Passando o número 7,

    mostrará ”Criança” 7 // Passando o número 25, mostrará ”Adulto” 25 // Passando o número 14, mostrará ”Adulto” 14
  28. Júlio de Lima [email protected] @juliodelimas idade < 12 ”É criança”

    idade >= 12 && idade < 18 ”É adolescente” ”É adulto”
  29. Júlio de Lima [email protected] @juliodelimas // Passando o número 14,

    agora mostrará ”Adolescente” porque 14 é >= a 12 e < que 18 14
  30. Júlio de Lima [email protected] @juliodelimas • • // Declarando a

    lista de frutas List<String> frutasFavoritas = new ArrayList<String>(); // Adicionando frutas à lista frutasFavoritas.add(”Laranja”); frutasFavoritas.add(”Maçã”); frutasFavoritas.add(”Abacaxi”);
  31. Júlio de Lima [email protected] @juliodelimas // Declarando a lista de

    frutas List<Navegador> navegadores = new ArrayList<Navegador>(); // Adicionando frutas à lista navegadores.add(new Firefox()); navegadores.add(new Chrome()); navegadores.add(new InternetExplorer());
  32. Júlio de Lima [email protected] @juliodelimas for (Navegador navegador : navegadores)

    { // Vai apresentar o nome do navegador System.out.println(navegador.nome); }
  33. Júlio de Lima [email protected] @juliodelimas for (Navegador navegador : navegadores)

    { // Vai apresentar o nome do navegador System.out.println(navegador.nome); }
  34. Júlio de Lima [email protected] @juliodelimas for (Navegador navegador : navegadores)

    { // Vai apresentar o nome do navegador System.out.println(navegador.nome); navegador.navegar(”http://google.com”); navegador.atualizar(); navegador.fechar(); // etc… }