Localizadores em Selenium
โก Resumo Inteligente
Localizadores em Selenium Sรฃo comandos que orientam o mecanismo de automaรงรฃo a identificar elementos da interface grรกfica do usuรกrio (GUI), como caixas de texto, botรตes e caixas de seleรงรฃo. Esta referรชncia explica os tipos de localizadores ID, Nome, Texto do Link, DOM e XPath com exemplos prรกticos, regras de sintaxe e estratรฉgias de seleรงรฃo para scripts de automaรงรฃo web confiรกveis.
O que sรฃo localizadores em Selenium?
Um localizador รฉ um comando que direciona Selenium IDE ou Selenium O WebDriver interage com o elemento correto da interface grรกfica do usuรกrio (GUI), como uma caixa de texto, botรฃo, link ou caixa de seleรงรฃo, no qual uma aรงรฃo deve ser executada. Identificar o elemento correto da GUI รฉ um prรฉ-requisito para criar qualquer script de automaรงรฃo confiรกvel. No entanto, a identificaรงรฃo precisa รฉ mais desafiadora do que parece. รs vezes, vocรช pode acabar interagindo com o elemento errado ou com nenhum elemento. Para resolver isso, Selenium Oferece uma variedade de estratรฉgias de localizaรงรฃo que permitem o direcionamento preciso de elementos da interface grรกfica do usuรกrio.
Embora alguns comandos, como o comando โabrirโ, nรฃo exijam um localizador, a maioria dos Selenium Os comandos dependem dos localizadores de elementos. A escolha do localizador depende em grande parte da sua Aplicaรงรฃo em Teste (AUT). Neste tutorial, alternaremos entre o Facebook e o Mercury Site de demonstraรงรฃo de tours (newtours.demoaut), com base nos localizadores que cada aplicativo suporta. Da mesma forma, no seu prรณprio. ensaio projeto, vocรช selecionarรก um localizador de elementos em Selenium WebDriver baseado na estrutura da sua aplicaรงรฃo.
Localizaรงรฃo por ID
Este รฉ o mรฉtodo mais comum para localizar elementos, pois os IDs sรฃo projetados para serem รบnicos para cada elemento em uma pรกgina. Sempre que um atributo ID existir, ele deve ser sua primeira opรงรฃo para scripts de teste rรกpidos, estรกveis โโe legรญveis.
Target Formato: id=id do elemento
Para este exemplo, usaremos uma pรกgina de demonstraรงรฃo do Facebook porque Mercury O Tours nรฃo utiliza atributos de ID para os campos principais do formulรกrio.
Passo 1) Use esta pรกgina de demonstraรงรฃo https://demo.guru99.com/test/facebook.html para testes. Inspecione a caixa de texto โE-mail ou Telefoneโ usando as Ferramentas de Desenvolvedor integradas do seu navegador (pressione F12 no Chrome, Edge ou Firefox) e anote seu ID. Neste caso, o ID รฉ โemailโ.
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โ estรก destacada em amarelo com uma borda verde, indicando que Selenium O IDE localizou o elemento corretamente.
Localizando por nome
Localizar elementos por nome รฉ semelhante a localizรก-los por ID, exceto que usamos o โnome=โ Em vez disso, use o prefixo. Essa abordagem รฉ รบtil quando os elementos nรฃo possuem um ID, mas tรชm um atributo de nome definido.
Target Formato: nome=nome do elemento
Para a demonstraรงรฃo a seguir, usaremos Mercury Tours porque todos os elementos de formulรกrio significativos no site possuem um atributo de nome.
Passo 1) Acessar https://demo.guru99.com/test/newtours/ Utilize as Ferramentas de Desenvolvedor do navegador para inspecionar a caixa de texto "Nome de Usuรกrio". Anote o atributo "name" dessa caixa.
Aqui, 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 localizar a caixa de texto Nome de Usuรกrio, destacando-a.
Como localizar o elemento por nome usando filtros
Os filtros sรฃo รบteis quando vรกrios elementos compartilham o mesmo atributo de nome. Os filtros sรฃo atributos adicionais usados โโpara distinguir elementos que compartilham o mesmo nome. Sem filtros, Selenium por padrรฃo, seria utilizado apenas o primeiro elemento correspondente.
Target Formato: nome=nome_do_elemento filtro=valor_do_filtro
Vejamos um exemplo.
Passo 1) Faรงa logon para Mercury Passeios.
Entre para Mercury Para visitas guiadas que utilizam โtutorialโ como nome de usuรกrio e senha, a pรกgina do Localizador de Voos deverรก aparecer, conforme mostrado abaixo.
Passo 2) Utilize as Ferramentas de Desenvolvedor para inspecionar os atributos VALUE.
Observe que os botรตes de opรงรฃo Ida e Volta e Sรณ Ida compartilham o mesmo nome, โtripTypeโ. No entanto, eles possuem atributos VALUE diferentes, portanto, podemos usar cada valor como um filtro.
Passo 3) Clique na primeira linha do editor.
- Primeiro, vamos acessar a opรงรฃo "Sentido รnico". Clique na primeira linha do... Selenium Editor IDE.
- Na caixa de comando, digite o comando โcliqueโ.
- De acordo com o relatรณrio Target Na caixa, digite โname=tripType value=onewayโ. A parte โvalue=onewayโ serve como nosso filtro.
Passo 4) Clique no botรฃo Localizar.
Observe que Selenium O IDE destaca o botรฃo de opรงรฃo "Sentido รบnico" em verde, confirmando que o elemento foi acessado com sucesso por meio de seu atributo VALUE.
Passo 5) Selecione a opรงรฃo "Sentido รบnico".
Pressione a tecla โXโ no seu teclado para executar o comando de clique. O botรฃo de opรงรฃo โSentido รบnicoโ agora estรก selecionado.
Vocรช pode executar a mesma aรงรฃo no botรฃo de opรงรฃo Ida e Volta, desta vez usando โname=tripType value=roundtripโ como seu alvo.
Localizaรงรฃo por texto do link
Essa estratรฉgia de localizaรงรฃo se aplica somente a textos de hiperlinks. Acessamos o link prefixando o destino com โlink=โ seguido pelo texto visรญvel do hiperlink. Esse mรฉtodo รฉ altamente legรญvel e funciona bem para testes de navegaรงรฃo.
Target Formato: link=link_texto
No exemplo a seguir, acessaremos o link โREGISTRARโ encontrado no Mercury Pรกgina inicial de passeios.
Passo 1)
- Primeiro, certifique-se de que vocรช estรก desconectado(a) do Mercury Passeios.
- Navegue atรฉ a Mercury Pรกgina inicial de passeios.
Passo 2)
- Use as Ferramentas de Desenvolvedor para inspecionar o link โREGISTRARโ. O texto do link aparece entre as tags de รขncora de abertura e fechamento.
- Neste caso, o texto do link รฉ โREGISTRARโ. Copie o texto do link.
Passo 3) Copie o texto do link e cole-o no Selenium IDE Target caixa. Prefixe com โlink=โ.
Passo 4) Clique no botรฃo Localizar. Selenium O IDE destacarรก corretamente o link REGISTER.
Passo 5) Para verificar melhor, digite โclickAndWaitโ na caixa de comando e execute-o. Selenium O IDE clicarรก com sucesso no link REGISTRAR e vocรช serรก redirecionado para a pรกgina de registro mostrada abaixo.
Localizaรงรฃo por DOM (Modelo de Objeto de Documento)
O Modelo de Objeto de Documento (DOM)Em termos simples, descreve como os elementos HTML sรฃo estruturados como uma รกrvore de nรณs. Selenium O IDE pode navegar por esta รกrvore para acessar os elementos da pรกgina. Ao usar este mรฉtodo, o Target A caixa sempre comeรงa com โdom=documentoโฆโ. O prefixo โdom=โ geralmente รฉ omitido porque Selenium O IDE interpreta automaticamente qualquer valor que comece com โdocumentโ como um caminho DOM.
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 primeiro explorar o mรฉtodo getElementById do DOM em SeleniumEste mรฉtodo retorna um รบnico elemento, correspondendo ao seu atributo ID.
Sintaxe
document.getElementById("id of the element")
- O ID do elemento corresponde ao valor do atributo ID do elemento a ser acessado. Esse valor deve sempre estar entre aspas.
Passo 1) Use esta pรกgina de demonstraรงรฃo https://demo.guru99.com/test/facebook.htmlNavegue atรฉ ele e use as Ferramentas do Desenvolvedor para inspecionar a caixa de seleรงรฃo "Manter-me conectado". Anote o ID dela.
O ID que devemos usar รฉ โpersist_boxโ.
Passo 2) Abra Selenium IDE e no Target na caixa insira document.getElementById(โpersist_boxโ), depois clique em Localizar. Selenium O IDE localizarรก a caixa de seleรงรฃo "Manter-me conectado". Embora nรฃo consiga destacar o interior da caixa de seleรงรฃo, ele a envolve com uma borda verde brilhante, como mostrado abaixo.
Localizaรงรฃo por DOM โ getElementsByName
O mรฉtodo `getElementById` acessa apenas um elemento por vez, ou seja, o elemento com o ID especificado. O mรฉtodo `getElementsByName` se comporta de maneira diferente. Ele retorna um array de elementos que compartilham o nome especificado. Os elementos individuais sรฃo acessados โโusando um รญndice numรฉrico que comeรงa em 0.
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) Navegue atรฉ a Mercury Acesse a pรกgina inicial de passeios e faรงa login usando โtutorialโ como nome de usuรกrio e senha. O navegador carregarรก a tela do Localizador de Voos.
Passo 2) Utilize as Ferramentas de Desenvolvedor para inspecionar os trรชs botรตes de opรงรฃo na parte inferior da pรกgina (Classe Econรดmica, Classe Executiva e Primeira Classe). Observe que todos compartilham o mesmo nome: โservClassโ.
Passo 3) Primeiro, vamos acessar o botรฃo de opรงรฃo โClasse Econรดmicaโ. Dos trรชs botรตes de opรงรฃo, este elemento aparece primeiro, portanto seu รญndice รฉ 0. Selenium IDE, digite document.getElementsByName(โservClassโ)[0] e clique no botรฃo Localizar. Selenium O IDE identificarรก corretamente a opรงรฃo "Classe Econรดmica".
Passo 4) Altere o nรบmero do รญndice para 1, para que seu Target torna-se document.getElementsByName(โservClassโ)[1]. Clique no botรฃo Localizar e Selenium O IDE destacarรก o botรฃo de opรงรฃo โClasse empresarialโ, conforme mostrado abaixo.
Localizando por DOM โ dom:nome
Como mencionado anteriormente, esse mรฉtodo sรณ se aplica se o elemento que vocรช estรก acessando estiver contido em um formulรกrio nomeado. O caminho do localizador comeรงa no formulรกrio e, em seguida, navega atรฉ o elemento de destino pelo nome.
Sintaxe
document.forms["name of the form"].elements["name of the element"]
- nome do formulรกrio = o valor do atributo nome da tag de 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/ Utilize as Ferramentas de Desenvolvedor para inspecionar a caixa de texto Nome de Usuรกrio. Observe que ela estรก contida em um formulรกrio chamado โhomeโ.
Passo 2) In Selenium No IDE, digite document.forms[โhomeโ].elements[โuserNameโ] e clique no botรฃo Localizar. Selenium O IDE acessarรก o elemento com sucesso.
Localizaรงรฃo por DOM โ dom:index
Este mรฉtodo se aplica mesmo quando o elemento nรฃo estรก dentro de um formulรกrio nomeado, pois utiliza o รญndice do formulรกrio em vez do seu nome. Isso รฉ รบtil para pรกginas legadas ou formulรกrios gerados automaticamente onde a nomeaรงรฃo nรฃo estรก disponรญvel.
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 ao formulรกrio que o contรฉm
Acessaremos a caixa de texto โTelefoneโ no Mercury Pรกgina de inscriรงรฃo para excursรตes. O formulรกrio nesta pรกgina nรฃo possui um atributo de nome nem de ID, sendo, portanto, um bom exemplo.
Passo 1) Navegue atรฉ a Mercury Na pรกgina de inscriรงรฃo para excursรตes, examine a caixa de texto "Telefone". Observe que o formulรกrio ao redor nรฃo possui atributos de ID nem de nome.
Passo 2) Insira document.forms[0].elements[3] no Selenium IDE Target caixa e clique no botรฃo Localizar. Selenium O IDE acessarรก corretamente a caixa de texto Telefone.
Passo 3) Alternativamente, vocรช pode usar o nome do elemento em vez do seu รญndice para obter o mesmo resultado. Digite document.forms[0].elements[โphoneโ] no Target A caixa de texto "Telefone" permanecerรก selecionada.
Localizando por XPath
XPath รฉ a linguagem de consulta usada para navegar em nรณs XML (Extensible Markup Language). Como o HTML pode ser considerado uma implementaรงรฃo de XML, XPath Tambรฉm pode localizar elementos HTML. ร uma das estratรฉgias de localizaรงรฃo mais poderosas em Selenium.
- Vantagem: Ele pode acessar praticamente qualquer elemento, incluindo aqueles sem atributos de classe, nome ou ID.
- Desvantagem: ร a estratรฉgia de localizaรงรฃo mais complexa devido ร s suas inรบmeras regras e variaรงรตes de sintaxe.
As ferramentas de desenvolvedor dos navegadores modernos podem gerar expressรตes XPath automaticamente. No Chrome, Edge ou FirefoxPara isso, clique com o botรฃo direito do mouse em um elemento no painel Elementos e escolha Copiar > Copiar XPath. No exemplo a seguir, acessaremos uma imagem que nรฃo pode ser localizada usando os mรฉtodos discutidos anteriormente.
Passo 1) Navegue atรฉ a Mercury Acesse a pรกgina inicial de visitas guiadas e use as Ferramentas do Desenvolvedor para inspecionar o retรขngulo laranja ร direita da caixa amarela "Links", conforme mostrado abaixo.
Passo 2) Clique com o botรฃo direito do mouse no cรณdigo HTML do elemento e selecione a opรงรฃo โCopiar XPathโ.
Passo 3) In Selenium IDE, digite uma รบnica barra invertida โ/โ no Target Na caixa, cole o XPath copiado na etapa anterior. A entrada no Target a caixa agora deve comeรงar com duas barras โ//โ.
Passo 4) Clique no botรฃo Localizar. Selenium O IDE destacarรก a caixa laranja, conforme mostrado abaixo.
Por que escolher o localizador certo รฉ importante
Selecionar a estratรฉgia de localizaรงรฃo correta รฉ uma das decisรตes mais influentes em Selenium A automaรงรฃo รฉ crucial porque impacta diretamente a estabilidade do script, a velocidade de execuรงรฃo e o custo de manutenรงรฃo a longo prazo. Um localizador mal escolhido pode causar testes instรกveis, falsos positivos e retrabalho frequente sempre que a interface do usuรกrio do aplicativo for alterada. A ordem de preferรชncia recomendada por engenheiros de automaรงรฃo experientes รฉ: primeiro o ID, depois o Nome, seguido pelo Seletor CSS, Texto do Link e, por รบltimo, XPath.
Localizadores baseados em ID sรฃo os mais rรกpidos porque a busca do navegador รฉ otimizada para identificadores รบnicos. Localizadores baseados em nome sรฃo quase tรฃo eficientes quando os nomes sรฃo รบnicos. Seletores CSS e XPath oferecem flexibilidade, mas tendem a ser mais lentos e mais frรกgeis quando os desenvolvedores refatoram o DOM. O texto do link รฉ excelente para links de navegaรงรฃo, mas oferece reutilizaรงรฃo limitada.
A automaรงรฃo estรกvel tambรฉm depende da colaboraรงรฃo com os desenvolvedores. Quando os testadores solicitam IDs ou atributos de dados consistentes e significativos durante as revisรตes de cรณdigo, a durabilidade dos localizadores melhora consideravelmente. Evite depender de IDs gerados automaticamente (como os produzidos por frameworks), pois eles podem mudar entre versรตes. Ao priorizar localizadores legรญveis e orientados ร intenรงรฃo, as equipes podem manter os conjuntos de testes sustentรกveis โโe reduzir a dรญvida tรฉcnica ร medida que o aplicativo evolui.
Melhores Prรกticas para Escrever Localizadores Confiรกveis
Localizadores confiรกveis โโsรฃo a base para um sistema de fรกcil manutenรงรฃo. Selenium Conjunto de testes. As prรกticas a seguir ajudam a reduzir falhas de script, melhorar a legibilidade e tornar os testes resilientes a alteraรงรตes na interface do usuรกrio.
- Prefira IDs รบnicos: Verifique sempre primeiro se existe um atributo ID. Os IDs sรฃo projetados para serem รบnicos dentro de uma pรกgina e sรฃo a opรงรฃo com melhor desempenho.
- Utilize atributos semรขnticos Name e data-*: Incentive os desenvolvedores a adicionar atributos de teste estรกveis, como `data-testid` ou `data-qa`. Esses atributos permanecem consistentes mesmo quando as classes CSS sรฃo alteradas.
- Evite XPath absoluto: Caminhos absolutos como /html/body/div[2]/div[3]/span quebram facilmente. Use expressรตes XPath relativas com atributos como //input[@name='userName'].
- Combine atributos para obter precisรฃo: Quando um รบnico atributo nรฃo for exclusivo, combine vรกrios atributos (por exemplo, //button[@type='submit' e @name='login']) para selecionar o elemento correto.
- Use o texto com sabedoria: Os localizadores que dependem de texto visรญvel podem apresentar problemas em diferentes idiomas. Use localizadores baseados em texto somente quando o conteรบdo for estรกvel e monolรญngue.
- Centralizar localizadores: Armazene os localizadores em uma classe do Modelo de Objeto de Pรกgina (POM) para que as atualizaรงรตes possam ser feitas em um รบnico local, em vez de em vรกrios scripts de teste.
- Validar nas Ferramentas de Desenvolvedor: Antes de adicionar um localizador a um script, teste-o no console do navegador usando $x(โ//xpathโ) para XPath ou document.querySelector para CSS para confirmar se ele retorna exatamente um elemento.
- Evite, sempre que possรญvel, localizadores baseados em รญndices: As posiรงรตes do รญndice, como [3], dependem da ordem dos elementos. Mesmo pequenas alteraรงรตes de layout podem deslocar o รญndice e quebrar o script.
Ao aplicar essas prรกticas de forma consistente, os engenheiros de automaรงรฃo criam conjuntos de testes que sรฃo escalรกveis โโpara diversas equipes e resistem a atualizaรงรตes frequentes da interface do usuรกrio com manutenรงรฃo mรญnima.






























