Localizadores em Selenium

O que sรฃo localizadores?

Localizador รฉ um comando que informa Selenium IDE quais elementos GUI (digamos Texto Box, Botรตes, Verifique Boxes etc) suas necessidades para operar. A identificaรงรฃo dos elementos GUI corretos รฉ um prรฉ-requisito para a criaรงรฃo de um script de automaรงรฃo. Mas a identificaรงรฃo precisa dos elementos da GUI รฉ mais difรญcil do que parece. ร€s vezes, vocรช acaba trabalhando com elementos GUI incorretos ou sem nenhum elemento! Por isso, Selenium fornece vรกrios localizadores para localizar com precisรฃo um elemento GUI

Existem comandos que nรฃo precisam de localizador (como o comando โ€œabrirโ€). No entanto, a maioria deles precisa de localizadores de elementos em Selenium driver da web.

A escolha do localizador depende muito da sua aplicaรงรฃo em teste. Neste tutorial, alternaremos entre o Facebook e o novo tours.demoaut com base nos localizadores suportados por esses aplicativos. Da mesma forma em seu Testes projeto, vocรช selecionarรก qualquer um dos localizadores de elementos listados acima em Selenium webdriver, com base no suporte do seu aplicativo.

Localizaรงรฃo por ID

Esta รฉ a forma mais comum de localizar elementos, jรก que os IDs devem ser รบnicos para cada elemento.

Target Formato: id=id do elemento

Neste exemplo, usaremos o Facebook como nosso aplicativo de teste porque Mercury Os tours nรฃo usam atributos de ID.

Passo 1) Desde que este tutorial foi criado, o Facebook mudou o design da pรกgina de login. Use esta pรกgina de demonstraรงรฃo https://demo.guru99.com/test/facebook.html para teste. Inspecione a caixa de texto โ€œE-mail ou telefoneโ€ usando Firebug e anote seu ID. Neste caso, o ID รฉ โ€œe-mailโ€.

Localizaรงรฃo por ID

Passo 2) Lanรงamento Selenium IDE e digite โ€œid=emailโ€ no Target caixa. Clique no botรฃo Localizar e observe que a caixa de texto โ€œE-mail ou telefoneโ€ fica destacada em amarelo e com bordas verdes, o que significa, Selenium O IDE conseguiu localizar esse elemento corretamente.

Localizaรงรฃo por ID

Localizando por nome

Localizar elementos por nome รฉ muito semelhante a localizar por ID, exceto que usamos o mรฉtodo โ€œnome=โ€ prefixo em vez disso.

Target Formato: nome=nome do elemento

Na demonstraรงรฃo a seguir, usaremos agora Mercury Tours porque todos os elementos significativos tรชm nomes.

Passo 1) Acessar https://demo.guru99.com/test/newtours/ e use o Firebug para inspecionar a caixa de texto โ€œNome de usuรกrioโ€. Observe seu atributo name.

Localizando por nome

Aqui vemos que o nome do elemento รฉ โ€œuserNameโ€.

Passo 2) In Selenium IDE, digite โ€œnome=nomedeusuรกrioโ€ no campo Target caixa e clique no botรฃo Localizar. Selenium O IDE deve conseguir localizar a caixa de texto Nome de usuรกrio destacando-a.

Localizando por nome

Como localizar o elemento por nome usando filtros

Os filtros podem ser usados โ€‹โ€‹quando vรกrios elementos tรชm o mesmo nome. Filtros sรฃo atributos adicionais usados โ€‹โ€‹para distinguir elementos com o mesmo nome.

Target Formato: nome=nome_do_elemento filtro=valor_do_filtro

Vamos ver um exemplo โ€“

Passo 1) Faรงa logon para Mercury Passeios.

Faรงa logon para Mercury Tours usando โ€œtutorialโ€ como nome de usuรกrio e senha. Ele deve levรก-lo ร  pรกgina do Flight Finder mostrada abaixo.

Localize o elemento por nome usando filtros

Passo 2) Usando o firebug, use atributos VALUE.

Usando o Firebug, observe que os botรตes de opรงรฃo Round Trip e One Way tรชm o mesmo nome โ€œtripTypeโ€. No entanto, eles possuem atributos VALUE diferentes, entรฃo podemos usar cada um deles como nosso filtro.

Localize o elemento por nome usando filtros

Passo 3) Clique na primeira linha.

  • Vamos acessar primeiro o botรฃo de opรงรฃo One Way. Clique na primeira linha do Editor.
  • Na caixa de comando de Selenium IDE, digite o comando โ€œcliqueโ€.
  • De acordo com o relatรณrio Target caixa, insira โ€œname=tripType value=onewayโ€. A parte โ€œvalue=onewayโ€ รฉ nosso filtro.

Localize o elemento por nome usando filtros

Passo 4) Clique no botรฃo Localizar.

Observe que Selenium O IDE รฉ capaz de destacar o botรฃo de opรงรฃo One Way em verde โ€“ o que significa que podemos acessar o elemento com sucesso usando seu atributo VALUE.

Localize o elemento por nome usando filtros

Passo 5) Selecione o botรฃo de opรงรฃo Unidirecional.

Pressione a tecla โ€œXโ€ do teclado para executar este comando de clique. Observe que o botรฃo de opรงรฃo One Way foi selecionado.

Localize o elemento por nome usando filtros

Vocรช pode fazer exatamente a mesma coisa com o botรฃo de opรงรฃo Round Trip, desta vez, usando โ€œname=tripType value=roundtripโ€ como seu destino.

Localizaรงรฃo por texto do link

Este tipo de localizador CSS em Selenium aplica-se apenas a textos de hiperlinks. Acessamos o link prefixando nosso alvo com โ€œlink=โ€ e seguido pelo texto do hiperlink.

Target Formato: link = link_texto

Neste exemplo, acessaremos o link โ€œREGISTROโ€ que se encontra na pรกgina Mercury Pรกgina inicial de passeios.

Passo 1)

  • Primeiro, certifique-se de estar desconectado do Mercury Passeios.
  • Acesse Mercury Pรกgina inicial de passeios.

Passo 2)

  • Usando o Firebug, inspecione o link โ€œREGISTERโ€. O texto do link รฉ encontrado entre as tags e.
  • Neste caso, o texto do nosso link รฉ โ€œREGISTROโ€. Copie o texto do link.

Localizaรงรฃo por texto do link

Passo 3) Copie o texto do link no Firebug e cole-o em Selenium IDE's Target caixa. Prefixe com โ€œlink=โ€.

Localizaรงรฃo por texto do link

Passo 4) Clique no botรฃo Localizar e observe que Selenium O IDE conseguiu destacar o link REGISTER corretamente.

Localizaรงรฃo por texto do link

Passo 5) Para verificar melhor, digite โ€œclickAndWaitโ€ na caixa de comando e execute-o. Selenium O IDE deverรก ser capaz de clicar no link REGISTER com sucesso e levรก-lo para a pรกgina de registro mostrada abaixo.

Localizaรงรฃo por texto do link

Localizaรงรฃo por DOM (Modelo de Objeto de Documento)

O processo de Modelo de Objeto de Documento (DOM), em termos simples, รฉ a forma como os elementos HTML sรฃo estruturados. Selenium O IDE รฉ capaz de usar o DOM para acessar os elementos da pรกgina. Se usarmos esse mรฉtodo, nosso Target caixa sempre comeรงarรก com โ€œdom=documentโ€ฆโ€; no entanto, o prefixo โ€œdom=โ€ normalmente รฉ removido porque Selenium O IDE รฉ capaz de interpretar automaticamente qualquer coisa que comece com a palavra-chave โ€œdocumentoโ€ como um caminho dentro do DOM. Selenium de qualquer maneira.

Existem quatro maneiras bรกsicas de localizar um elemento atravรฉs do DOM em Selenium:

  • getElementById
  • getElementsByName
  • dom:name (aplica-se apenas a elementos dentro de um formulรกrio nomeado)
  • dom:รญndice

Localizaรงรฃo por DOM โ€“ getElementById

Vamos nos concentrar no primeiro mรฉtodo โ€“ usando o mรฉtodo getElementById do DOM em Selenium. A sintaxe seria:

Sintaxe

document.getElementById("id of the element")

  • id do elemento = este รฉ o valor do atributo ID do elemento a ser acessado. Este valor deve sempre ser colocado entre parรชnteses (โ€œโ€).

Passo 1) Use esta pรกgina de demonstraรงรฃo https://demo.guru99.com/test/facebook.html Navegue atรฉ ele e use o Firebug para inspecionar a caixa de seleรงรฃo โ€œMantenha-me conectadoโ€. Anote seu ID.

Localizaรงรฃo por DOM โ€“ getElementById

Podemos ver que o ID que devemos usar รฉ โ€œpersist_boxโ€.

Passo 2) Abra Selenium IDE e no Target caixa, digite โ€œdocument.getElementById(โ€œpersist_boxโ€)โ€ e clique em Localizar. Selenium O IDE deve ser capaz de localizar a caixa de seleรงรฃo โ€œKeep me logged inโ€. Embora nรฃo possa destacar o interior da caixa de seleรงรฃo, Selenium O IDE ainda pode envolver o elemento com uma borda verde brilhante, conforme mostrado abaixo.

Localizaรงรฃo por DOM โ€“ getElementById

Localizaรงรฃo por DOM โ€“ getElementsByName

O mรฉtodo getElementById pode acessar apenas um elemento por vez, e esse รฉ o elemento com o ID que vocรช especificou. O mรฉtodo getElementsByName รฉ diferente. Ele coleta uma matriz de elementos que possuem o nome que vocรช especificou. Vocรช acessa os elementos individuais usando um รญndice que comeรงa em 0.

Localizaรงรฃo por DOM โ€“ getElementsByName

getElementById

  • Ele receberรก apenas um elemento para vocรช.
  • Esse elemento contรฉm o ID que vocรช especificou entre parรชnteses de getElementById().

Localizaรงรฃo por DOM โ€“ getElementsByName

getElementsByName

  • Ele obterรก uma coleรงรฃo de elementos cujos nomes sรฃo todos iguais.
  • Cada elemento รฉ indexado com um nรบmero comeรงando em 0, assim como um array
  • Vocรช especifica qual elemento deseja acessar colocando seu nรบmero de รญndice entre colchetes na sintaxe de getElementsByName abaixo.

Sintaxe

document.getElementsByName(โ€œnameโ€œ)[index]

  • nome = nome do elemento conforme definido pelo seu atributo 'nome'
  • index = um inteiro que indica qual elemento do array getElementsByName serรก usado.

Passo 1) Acessar Mercury Pรกgina inicial dos Tours e login usando โ€œtutorialโ€ como nome de usuรกrio e senha. Firefox deve levรก-lo para a tela do Flight Finder.

Passo 2) Usando o Firebug, inspecione os trรชs botรตes de opรงรฃo na parte inferior da pรกgina (botรตes de opรงรฃo Classe econรดmica, Classe executiva e Primeira classe). Observe que todos eles tรชm o mesmo nome que รฉ โ€œservClassโ€.

Localizaรงรฃo por DOM โ€“ getElementsByName

Passo 3) Vamos acessar primeiro o botรฃo de opรงรฃo โ€œClasse econรดmicaโ€. De todos esses trรชs botรตes de opรงรฃo, esse elemento vem em primeiro lugar, portanto tem um รญndice de 0. Em Selenium IDE, digite โ€œdocument.getElementsByName(โ€œservClassโ€)[0]โ€ e clique no botรฃo Localizar. Selenium O IDE deve ser capaz de identificar corretamente o botรฃo de opรงรฃo da classe econรดmica.

Localizaรงรฃo por DOM โ€“ getElementsByName

Passo 4) Altere o nรบmero do รญndice para 1 para que seu Target agora se tornarรก document.getElementsByName(โ€œservClassโ€)[1]. Clique no botรฃo Localizar e Selenium O IDE deve ser capaz de destacar o botรฃo de opรงรฃo โ€œClasse executivaโ€, conforme mostrado abaixo.

Localizaรงรฃo por DOM โ€“ getElementsByName

Localizando por DOM โ€“ dom:nome

Conforme mencionado anteriormente, este mรฉtodo sรณ serรก aplicado se o elemento que vocรช estรก acessando estiver contido em um formulรกrio nomeado.

Sintaxe

document.forms[โ€œname of the formโ€œ].elements[โ€œname of the elementโ€œ]

  • nome do formulรกrio = o valor do atributo name da tag do formulรกrio que contรฉm o elemento que vocรช deseja acessar
  • nome do elemento = o valor do atributo nome do elemento que vocรช deseja acessar

Passo 1) Acessar Mercury Pรกgina inicial dos passeios https://demo.guru99.com/test/newtours/ e use o Firebug para inspecionar a caixa de texto Nome de usuรกrio. Observe que ele estรก contido em um formulรกrio chamado โ€œhomeโ€.

Localizando por DOM โ€“ dom:nome

Passo 2) In Selenium IDE, digite โ€œdocument.forms[โ€œhomeโ€].elements[โ€œuserNameโ€]โ€ e clique no botรฃo Localizar. Selenium O IDE deve ser capaz de acessar o elemento com รชxito.

Localizando por DOM โ€“ dom:nome

Localizaรงรฃo por DOM โ€“ dom:index

Este mรฉtodo se aplica mesmo quando o elemento nรฃo estรก em um formulรกrio nomeado porque usa o รญndice do formulรกrio e nรฃo seu nome.

Sintaxe

document.forms[index of the form].elements[index of the element]

  • รญndice do formulรกrio = o nรบmero do รญndice (comeรงando em 0) do formulรกrio em relaรงรฃo ร  pรกgina inteira
  • รญndice do elemento = o nรบmero do รญndice (comeรงando em 0) do elemento em relaรงรฃo a todo o formulรกrio que o contรฉm

Acessaremos a caixa de texto โ€œTelefoneโ€ dentro Mercury Pรกgina de inscriรงรฃo de passeios. O formulรกrio nessa pรกgina nรฃo possui nome e atributo ID, portanto, este serรก um bom exemplo.

Passo 1) Acessar Mercury Pรกgina de registro de passeios e inspecione a caixa de texto Phone. Observe que o formulรกrio que o contรฉm nรฃo tem atributos ID e name.

Localizaรงรฃo por DOM โ€“ dom:index

Passo 2) Digite โ€œdocument.forms[0].elements[3]โ€ em Selenium IDE's Target caixa e clique no botรฃo Localizar. Selenium O IDE deve conseguir acessar a caixa de texto Telefone corretamente.

Localizaรงรฃo por DOM โ€“ dom:index

Passo 3) Alternativamente, vocรช pode usar o nome do elemento em vez de seu รญndice e obter o mesmo resultado. Digite โ€œdocument.forms[0].elements[โ€œphoneโ€]โ€ em Selenium IDE's Target caixa. A caixa de texto Telefone ainda deve ficar destacada.

Localizaรงรฃo por DOM โ€“ dom:index

Localizando por XPath

XPath รฉ a linguagem usada para localizar nรณs XML (Extensible Markup Language). Como o HTML pode ser pensado como uma implementaรงรฃo do XML, tambรฉm podemos usar XPath na localizaรงรฃo de elementos HTML.

  • Vantagem: Ele pode acessar quase qualquer elemento, mesmo aqueles sem atributos de classe, nome ou id.
  • Desvantagem: ร‰ o mรฉtodo mais complicado de identificar elementos devido a muitas regras e consideraรงรตes diferentes.

Felizmente, o Firebug pode gerar XPath automaticamente Selenium localizadores. No exemplo a seguir, acessaremos uma imagem que nรฃo pode ser acessada por meio dos mรฉtodos que discutimos anteriormente.

Passo 1) Acessar Mercury Tours Homepage e use o Firebug para inspecionar o retรขngulo laranja ร  direita da caixa amarela โ€œLinksโ€. Consulte a imagem abaixo.

Localizando por XPath

Passo 2) Clique com o botรฃo direito no cรณdigo HTML do elemento e selecione a opรงรฃo โ€œCopiar XPathโ€.

Localizando por XPath

Passo 3) In Selenium IDE, digite uma barra โ€œ/โ€ no Target caixa e cole o XPath que copiamos na etapa anterior. A entrada em seu Target a caixa agora deve comeรงar com duas barras โ€œ//โ€.

Localizando por XPath

Passo 4) Clique no botรฃo Localizar. Selenium O IDE deve conseguir destacar a caixa laranja, conforme mostrado abaixo.

Localizando por XPath

Resumo

Sintaxe para uso do localizador

Forma Target Sintaxe Exemplo
Por ID id=id_of_the_element id=e-mail
Por nome nome=nome_do_elemento nome = nome do usuรกrio
Por nome usando filtros nome=nome_do_elemento filtro=valor_do_filtro nome = tipo de viagem valor = ida
Por texto do link link=link_texto link = CADASTRE-SE

Resuma esta postagem com: