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โ.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Passo 3) Copie o texto do link no Firebug e cole-o em Selenium IDE's Target caixa. Prefixe com โlink=โ.
Passo 4) Clique no botรฃo Localizar e observe que Selenium O IDE conseguiu destacar o link REGISTER corretamente.
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 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.
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 โ 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.
|
getElementById
|
|
|
getElementsByName
|
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โ.
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.
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.
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โ.
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.
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.
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.
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.
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.
Passo 2) Clique com o botรฃo direito no cรณdigo HTML do elemento e selecione a opรงรฃo โCopiar 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 โ//โ.
Passo 4) Clique no botรฃo Localizar. Selenium O IDE deve conseguir destacar a caixa laranja, conforme mostrado abaixo.
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 |





























