Articles

Primeiro Selenium Webdriver Script: JAVA exemplo de Código de Exemplo

Usando a classe Java “myclass” que criamos no tutorial anterior, vamos tentar criar um WebDriver script que:

  1. busca de Mercúrio Tours página inicial
  2. verifique se o seu título
  3. imprimir o resultado da comparação
  4. fechá-lo antes de terminar o programa inteiro.

Código WebDriver

abaixo está o código WebDriver real para a lógica apresentada pelo cenário acima

Nota: Iniciando o Firefox 35, você precisa usar o driver gecko criado pela Mozilla para usar o Driver Web. Selênio 3.0, gecko e firefox têm problemas de compatibilidade e configurá-los corretamente pode se tornar uma tarefa difícil. Se o código não funcionar, desclassifique para a versão 47 ou abaixo do Firefox. Alternativamente, você pode executar seus scripts no Chrome. O selénio funciona fora da caixa por cromado. Você só precisa mudar 3 linhas de código para fazer o script funcionar com o Chrome ou o Firefox

package newproject;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;//comment the above line and uncomment below line to use Chrome//import org.openqa.selenium.chrome.ChromeDriver;public class PG1 { public static void main(String args) { // declaration and instantiation of objects/variables System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe");WebDriver driver = new FirefoxDriver();//comment the above 2 lines and uncomment below 2 lines to use Chrome//System.setProperty("webdriver.chrome.driver","G:\\chromedriver.exe");//WebDriver driver = new ChromeDriver(); String baseUrl = "http://demo.guru99.com/test/newtours/"; String expectedTitle = "Welcome: Mercury Tours"; String actualTitle = ""; // launch Fire fox and direct it to the Base URL driver.get(baseUrl); // get the actual value of the title actualTitle = driver.getTitle(); /* * compare the actual title of the page with the expected one and print * the result as "Passed" or "Failed" */ if (actualTitle.contentEquals(expectedTitle)){ System.out.println("Test Passed!"); } else { System.out.println("Test Failed"); } //close Fire fox driver.close(); }}

Explicando o código

Para começar, você precisa importar os seguintes dois pacotes:

  1. org.openqa.selenio.* – contém a classe de WebDriver necessária para instanciar um novo navegador carregado com um driver específico
  2. org.openqa.selenio.graca.FirefoxDriver-contém a classe de FirefoxDriver necessária para instanciar um driver específico do Firefox no navegador instanciado pela classe de WebDriver

Se o seu teste necessitar de acções mais complicadas, como o acesso a outra classe, A captura de imagens do navegador ou a manipulação de ficheiros externos, terá definitivamente de importar mais pacotes.

instanciando objetos e variáveis

normalmente, é assim que um objeto condutor está instanciado.

First Selenium Webdriver Script: JAVA Code Example

a FirefoxDriver class with no parameters means that the default Firefox profile will be launched by our Java program. O perfil predefinido do Firefox é semelhante ao lançamento do Firefox em modo seguro (não são carregadas extensões).

por conveniência, guardamos o URL de Base e o título esperado como variáveis.

lançar uma sessão de navegador

o método get() do WebDriver é usado para lançar uma nova sessão de navegador e direcioná-lo para o URL que você especifica como seu parâmetro.

Primeiro Selenium Webdriver Script: Exemplo de Código JAVA

Get Real Título da Página

O WebDriver classe possui o método getTitle() que é sempre usado para obter o título de página de página atualmente carregada.

First Selenium Webdriver Script: Exemplo de código JAVA

Compare os valores esperados e reais

esta parte do código simplesmente usa uma estrutura básica Java if-else para comparar o título real com o esperado.

First Selenium Webdriver Script: JAVA Code Example

terminando uma sessão do navegador

o método” close () ” é usado para fechar a janela do navegador.

First Selenium Webdriver Script: Exemplo de código JAVA

terminando o programa inteiro

Se você usar este comando sem fechar todas as janelas do navegador primeiro, todo o seu programa Java terminará ao deixar a janela do navegador aberta.

First Selenium Webdriver Script: JAVA Code Example

executando o teste

Existem duas maneiras de executar o código no IDE Eclipse.

  1. na barra de menu do Eclipse, carregue em Executar> executar.
  2. Carregue em Ctrl+F11 para executar todo o código.

Primeiro Selenium Webdriver Script: Exemplo de Código JAVA

Se você fez tudo corretamente, o Eclipse saída seria “Teste Passado!”

Primeiro Selenium Webdriver Script: Exemplo de Código JAVA

Localizar Elementos da GUI

a Localização de elementos em WebDriver é feito usando o “findElement(Por.locator () ” method. A parte “localizador” do código é a mesma que qualquer um dos localizadores anteriormente discutidos nos capítulos de selênio IDE destes tutoriais. Na verdade, é recomendado que você localize elementos GUI usando IDE e uma vez identificado com sucesso exportar o código para WebDriver.

Aqui está um código de amostra de selênio que localiza um elemento por seu id. O Facebook é usado como URL Base.

package newproject;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;public class PG2 { public static void main(String args) { System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe"); WebDriver driver = new FirefoxDriver(); String baseUrl = "http://www.facebook.com"; String tagName = ""; driver.get(baseUrl); tagName = driver.findElement(By.id("email")).getTagName(); System.out.println(tagName); driver.close(); System.exit(0);}}

we used the getTagName() method to extract the tag name of that particular element whose id is “email”. Quando executado, este código deve ser capaz de identificar corretamente o nome da tag “input” e vai imprimi-lo na janela da consola do Eclipse.

First Selenium Webdriver Script: JAVA Código de Exemplo

Resumo para a localização de elementos

Variação Descrição Exemplo
Por.className encontra elementos baseados no valor do atributo” class “ findElement(By.className (“someClassName”)
By.cssSelector encontra elementos baseados no motor de seletor de CSS subjacente do driver findElement(By.cssSelector(“input#email”))
Por.id localiza elementos pelo valor de seu atributo “id” findElement(Por.identificação(“someId”))
Por.linkText encontra um elemento de ligação pelo texto exato que exibe findElement(By.linkText(“CADASTRO”))
Por.nome localiza elementos pelo valor de “nome” atributo findElement(Por.name(“someName”))
By.partialLinkText locates elements that contain the given link text findElement(By.partialLinkText(“REG”))
By.tagName locates elements by their tag name findElement(By.tagName(“div”))
By.xpath locates elements via XPath findElement(By.xpath(“//html/corpo/div/tabela/tbody/tr/td/tabela/ tbody/tr/td/tabela/tbody/tr/td/tabela/tbody/tr/td/ form/tabela/tbody/tr”))

Nota sobre a Utilização do findElement(Por.cssSelector ()

By.o cssSelector () não suporta o recurso “contains”. Considere o Selenium IDE de código abaixo

Primeiro Selenium Webdriver Script: Exemplo de Código JAVA

No Selenium IDE acima, todo o teste passou. No entanto, no script do WebDriver selênio abaixo, o mesmo teste gerou um erro porque o WebDriver não suporta a palavra-chave “contém” quando usado no By.método cssSelector ().

Primeiro Selenium Webdriver Script: Exemplo de Código JAVA

Comandos Comuns

Instanciar Elementos da Web

em Vez de usar o longa “driver.findElement (By.Localizador ()) ” sintaxe cada vez que você vai acessar um elemento em particular, podemos instanciar um objeto WebElement para ele. A classe WebElement está contida na ” org.openqa.selenio.*” pacote.

Primeiro Selenium Webdriver Script: Exemplo de Código JAVA

Clicar em um Elemento

Clicar é, talvez, a forma mais comum de interagir com elementos da web. O método click() é usado para simular o Click de qualquer elemento. O seguinte exemplo de Java de selênio mostra como click () foi usado para clicar no botão “Sign-In” da Mercury Tours.

First Selenium Webdriver Script: Exemplo de código JAVA

a seguir as coisas devem ser anotadas ao usar o método click ().

  • não toma nenhum parâmetro / argumento.
  • o método espera automaticamente que uma nova página seja carregada, se aplicável.
  • o elemento a carregar deve ser visível (a altura e a largura não devem ser iguais a zero).

obter comandos

obter comandos obter várias informações importantes sobre a página/elemento. Aqui estão alguns comandos “get” importantes que você deve estar familiarizado com.

Comandos de Uso
get() Exemplo de uso:
  • Ele automaticamente abre uma nova janela do navegador e busca a página que você especificar, dentro dos seus parênteses.
  • É a contraparte do comando “open” do selénio IDE.
  • o parâmetro deve ser um objeto de cadeia de caracteres.
getTitle() utilização de amostras:
  • não Precisa de parâmetros
  • Busca o título da página
  • à esquerda e à direita espaços em branco são cortados
  • Retorna uma seqüência de caracteres nula se a página não tem título
getPageSource() Exemplo de uso:
  • não Precisa de parâmetros
  • Retorna o código-fonte da página, como um valor de Seqüência de caracteres
getCurrentUrl() Exemplo de uso:
  • não Precisa de parâmetros
  • Busca a seqüência de caracteres que representa a atual URL que o navegador está olhando
getText() Exemplo de uso:
  • Busca interna do texto do elemento que você especifique o

Navegar comandos

Estes comandos permitem que você atualizar go-no e alternar entre diferentes páginas da web.

navegar().para () utilização da amostra:
  • abre automaticamente uma nova janela do navegador e obtém a página que indicar dentro dos seus parêntesis.
  • Ele faz exatamente a mesma coisa que o método get ().
navegar ().refresh () Utilização da amostra:
  • não necessita de parâmetros.
  • actualiza a página actual.
navegar ().back () Sample usage:
  • não necessita de parâmetros
  • leva-o de volta por uma página no histórico do navegador.
navegar ().forward () Sample usage:
  • não necessita de parâmetros
  • leva-o para a frente por uma página no histórico do navegador.

Fechar e fechar Janelas do Navegador

close() Exemplo de uso:
  • não Precisa de parâmetros
  • só fecha a janela do navegador que WebDriver é, atualmente, o controle.
quit() Utilização da amostra:
  • não necessita de parâmetros
  • fecha todas as janelas que o WebDriver abriu.

Primeiro Selenium Webdriver Script: Exemplo de Código JAVA

Para ilustrar claramente a diferença entre fechar() e quit(), tentar executar o código abaixo. Ele usa uma página web que automaticamente aparece uma janela em cima da carga da página e abre outra depois de sair.

First Selenium Webdriver Script: Exemplo de código JAVA

Notice that only the parent browser window was closed and not the two pop-up windows.

First Selenium Webdriver Script: JAVA Code Example

mas se você usar quit(), todas as janelas serão fechadas – não apenas a original. Tente executar o código abaixo e você vai notar que os dois pop-ups acima serão automaticamente fechados também.

alternando entre quadros

para acessar elementos GUI em uma moldura, devemos primeiro direcionar WebDriver para focar na moldura ou janela pop-up primeiro antes de podermos acessar elementos dentro deles. Tomemos, por exemplo, a página da web http://demo.guru99.com/selenium/deprecated.html

Primeiro Selenium Webdriver Script: Exemplo de Código JAVA

Esta página tem 3 quadros cujo “nome” atributos são indicados acima. Queremos aceder à ligação “obsoleta” rodeada em amarelo. A fim de fazer isso, devemos primeiro instruir WebDriver para mudar para o quadro “classFrame” usando o “switto().frame () ” method. Usaremos o atributo nome do frame como parâmetro para a parte “frame ()”.

Depois de executar este código, você verá que o quadro” classFrame “é levado para a página” API depreciada”, o que significa que o nosso código foi capaz de acessar com sucesso o link” obsoleto”.

alternar entre janelas Pop-up

WebDriver permite que janelas pop-up como alertas sejam exibidos, ao contrário do selênio IDE. Para acessar os elementos dentro do alerta (como a mensagem que ele contém), devemos usar o “switto ().alerta () ” método. No código abaixo, vamos utilizar este método para acessar a caixa de alerta e, em seguida, recuperar a sua mensagem utilizando o “getText()” método e, em seguida, fechar automaticamente a caixa de alerta usando o “switchTo().alerta().accept () ” method.

primeiro, dirija-se parahttp://jsbin.com/usidix/1 e clique manualmente no “Go!”abotoe aí e veja por si mesmo o texto da mensagem.

First Selenium Webdriver Script: JAVA Código de Exemplo

Vamos ver o Selênio exemplo de código para fazer isso-

package mypackage;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;public class myclass { public static void main(String args) { System.setProperty("webdriver.gecko.driver","C:\\geckodriver.exe"); WebDriver driver = new FirefoxDriver(); String alertMessage = ""; driver.get("http://jsbin.com/usidix/1"); driver.findElement(By.cssSelector("input")).click(); alertMessage = driver.switchTo().alert().getText(); driver.switchTo().alert().accept(); System.out.println(alertMessage); driver.quit(); }}

No console do Eclipse, observe que o impresso mensagem de alerta é:

Primeiro Selenium Webdriver Script: JAVA Código de Exemplo

Aguarda

Existem dois tipos de espera.

  1. Implícito aguarde – usado para definir o padrão de tempo de espera durante o programa
  2. Explícito aguarde – usado para definir o tempo de espera para uma determinada instância apenas

Implícito Espera

  • é mais simples do que Explícito Espera.é geralmente declarado na parte instanciação do Código.
  • você só precisará de um pacote adicional para importar.

para começar a usar uma espera implícita, terá de importar Este pacote para o seu código.

First Selenium Webdriver Script: Exemplo de código JAVA

então na parte de instanciação do seu código, adicione isto.

First Selenium Webdriver Script: JAVA Code Example

Explicit Wait

Explicit waits are done using the WebDriverWait and ExpectedCondition classes. Para o seguinte exemplo do WebDriver selênio, vamos esperar até 10 segundos para que um elemento cujo id é o “utilizador” se torne visível antes de avançar para o próximo comando. Aqui estão os degraus.

Passo 1

importar estas duas embalagens:

First Selenium Webdriver Script: JAVA Code Example

Step 2

Declare a WebDriverWait variable. Neste exemplo, vamos usar “myWaitVar” como o nome da variável.

First Selenium Webdriver Script: JAVA Code Example

Step 3

Use myWaitVar with Expectedcondições em porções onde você precisa da espera explícita para ocorrer. Neste caso, vamos usar a entrada “username” (HomePage Mercury Tours) para digitar o texto “tutorial” nele.

Primeiro Selenium Webdriver Script: Exemplo de Código JAVA

Condições

Seguintes métodos são usados em condicional e o ciclo de operações —

  • isEnabled() é usado quando você deseja verificar se um determinado elemento está ou não habilitado, antes de executar um comando.

Primeiro Selenium Webdriver Script: Exemplo de Código JAVA

  • isDisplayed() é usado quando você deseja verificar se um determinado elemento é exibido ou não antes de executar um comando.

Primeiro Selenium Webdriver Script: Exemplo de Código JAVA

  • isSelected() é usado quando você deseja verificar se uma determinada caixa de seleção, botão de opção ou uma opção em uma caixa drop-down está selecionado. Não funciona com outros elementos.

Primeiro Selenium Webdriver Script: Exemplo de Código JAVA

Usando ExpectedConditions

O ExpectedConditions classe oferece um amplo conjunto de condições que você pode usar em conjunto com WebDriverWait até() método.

abaixo estão alguns dos métodos mais comuns de condições esperadas.

  • alertIsPresent () – espera até que seja apresentada uma caixa de alerta.

Primeiro Selenium Webdriver Script: Exemplo de Código JAVA

  • elementToBeClickable() – Aguarda até que um elemento é visível e, ao mesmo tempo, ativado. O código de selênio da amostra abaixo irá esperar até que o elemento com para se tornar visível e ativado primeiro antes de atribuir esse elemento como uma variável de WebElement chamada “txtUserName”.

Primeiro Selenium Webdriver Script: Exemplo de Código JAVA

  • frameToBeAvailableAndSwitchToIt() – Espera até que o pacote dado já está disponível e, em seguida, muda automaticamente para ele.

Primeiro Selenium Webdriver Script: Exemplo de Código JAVA

a Captura de Exceções

Ao usar isEnabled(), isDisplayed(), e isSelected(), WebDriver pressupõe que o elemento já existe na página. Caso contrário, lançará uma excepção ao Nosuchelement. Para evitar isso, devemos usar um bloqueio de tentativa para que o programa não seja interrompido.

WebElement txtbox_username = driver.findElement(By.id("username"));try{ if(txtbox_username.isEnabled()){ txtbox_username.sendKeys("tutorial"); } }catch(NoSuchElementException nsee){ System.out.println(nsee.toString()); }

Se você usar waits explícitos, o tipo de exceção que você deve pegar é o “TimeoutException”.

First Selenium Webdriver Script: JAVA Code Example

Summary

  • Para começar a usar a API do WebDriver, você deve importar pelo menos estes dois pacotes.
  • org.openqa.selenio.*
  • org.openqa.selenio.graca.FirefoxDriver
  • The get () method is the equivalent of Selenium IDE’s “open” command.
  • localização de elementos no WebDriver é feito usando o método findElement ().
  • as seguintes opções estão disponíveis para localizar elementos no WebDriver:
  • By.className
  • By.cssSelector
  • Por.id
  • Por.linkText
  • By.name
  • By.partialLinkText
  • By.tagName
  • By.xpath
  • The By.o cssSelector () não suporta o recurso “contains”.
  • pode instanciar um elemento usando a classe WebElement.
  • clicar em um elemento é feito usando o método click ().
  • WebDriver fornece estes comandos get úteis:
  • get()
  • getTitle()
  • getPageSource()
  • getCurrentUrl()
  • getText()
  • WebDriver provides these useful navigation commands
  • navigate().forward()
  • navigate().back()
  • navigate().to()
  • navigate().refresh()
  • The close() and quit() methods are used to close browser windows. Close() é usado para fechar uma única janela; enquanto quit () é usado para fechar todas as janelas associadas à janela pai que o objeto WebDriver estava controlando.
  • a mudança().frame () e switto ().métodos de alerta() são usados para direcionar o foco do WebDriver para uma moldura ou alerta, respectivamente.
  • waits implícitos são usados para definir o tempo de espera ao longo do programa, enquanto waits explícitos são usados apenas em porções específicas.
  • Você pode usar o isEnabled (), isdesplayed (), isSelected (), e uma combinação de WebDriverWait e métodos de condições esperadas ao verificar o estado de um elemento. No entanto, não verificam se o elemento não existe.quando isEnabled (), is displayed (), or isSelected () was called while the element was not existing, WebDriver will throw a Nouchelementexception.
  • Quando o WebDriverWait e os métodos de condições esperadas foram chamados enquanto o elemento não existia, o WebDriver lançaria uma excepção Temporal. nota:

    condutor.obter() : É usado para ir para o site em particular, mas não mantém o histórico do navegador e cookies por isso , não podemos usar o botão para a frente e para trás , se clicarmos sobre isso, a página não vai obter o driver schedule

    driver.navegar (): é usado para ir ao site em particular, mas mantém o histórico do navegador e cookies, para que possamos usar o botão para frente e para trás para navegar entre as páginas durante a codificação do Testcase