Seletor CSS em Selenium

โšก Resumo Inteligente

Seletor CSS em Selenium รฉ uma poderosa estratรฉgia de localizaรงรฃo que identifica elementos usando tags HTML, IDs, classes, atributos e padrรตes de texto interno. Este recurso explica cada tipo de seletor CSS com exemplos passo a passo para Selenium IDE.

  • ๐Ÿ†” Etiqueta e ID: Combine uma tag HTML com o prefixo # para selecionar com precisรฃo elementos que possuam um atributo ID exclusivo.
  • ๐ŸŽฏ Etiqueta e Classe: Use a sintaxe de ponto (.) para localizar elementos que compartilham uma classe CSS, รบtil para componentes de interface do usuรกrio repetidos.
  • ๐Ÿงฉ Etiqueta e atributo: Aplique colchetes [atributo=valor] para identificar elementos por nome, tipo ou qualquer par de atributos personalizados.
  • ๐Ÿชœ Etiqueta, Classe e Atributo: Empilhe vรกrias condiรงรตes para desambiguar elementos que compartilham tanto nomes de classe quanto valores de atributos.
  • ๐Ÿ”ค Correspondรชncia de texto interno: Use o padrรฃo :contains(โ€œtextoโ€) para localizar rรณtulos e elementos que nรฃo possuem IDs, nomes ou classes.
  • โœ… Melhor Prรกtica: Prefira IDs estรกveis โ€‹โ€‹a seletores profundamente aninhados para manter Selenium Scripts de automaรงรฃo resistentes a alteraรงรตes na interface do usuรกrio.

Seletor CSS em Selenium

O que รฉ um seletor CSS? Selenium?

A Seletor CSS em Selenium Um seletor CSS รฉ um padrรฃo de string que identifica um elemento web atravรฉs de uma combinaรงรฃo de tag HTML, ID, classe e atributos. Os seletores CSS sรฃo um pouco mais avanรงados do que a localizaรงรฃo por ID ou nome, mas sรฃo a estratรฉgia mais popular entre desenvolvedores experientes. Selenium usuรกrios porque eles podem acessar elementos que nรฃo possuem nenhum atributo ID ou Nome.

Seletores CSS em Selenium Podem assumir muitas formas, mas este guia se concentra nos cinco padrรตes mais comuns usados โ€‹โ€‹em Selenium AQUI:

  • Etiqueta e ID
  • Etiqueta e classe
  • Tag e Atributo
  • Tag, classe e atributo
  • Texto interno

Ao usar essa estratรฉgia em Selenium IDE, sempre prefixe o Target caixa com โ€œcss=โ€ como demonstrado em cada exemplo abaixo.

Por que usar seletores CSS em Selenium?

Os seletores CSS sรฃo a estratรฉgia de localizaรงรฃo preferida para muitos. Selenium Engenheiros de automaรงรฃo, pois eles equilibram velocidade, flexibilidade e legibilidade. Aplicativos web modernos frequentemente usam IDs gerados dinamicamente ou removem completamente os atributos de nome, deixando os seletores CSS como a รบnica maneira confiรกvel de selecionar um elemento especรญfico na pรกgina.

As principais vantagens de usar seletores CSS incluem:

  • Desempenho: Os seletores CSS sรฃo processados โ€‹โ€‹pelo mecanismo nativo do navegador, portanto, sรฃo executados mais rapidamente do que expressรตes XPath equivalentes, especialmente em navegadores mais antigos, como o Internet Explorer.
  • Flexibilidade: Eles combinam lรณgica de tag, classe, atributo e correspondรชncia parcial, permitindo que os testadores identifiquem elementos que nรฃo possuem um ID estรกvel.
  • Legibilidade: A sintaxe espelha a forma como os desenvolvedores jรก escrevem regras CSS, o que reduz a curva de aprendizado tanto para os engenheiros de controle de qualidade quanto para as equipes de front-end.
  • Estabilidade entre navegadores: Os seletores CSS se comportam de maneira consistente no Chrome. FirefoxEdge e Safari, reduzindo falhas intermitentes em testes.

Seletor CSS de tags e IDs

Este exemplo utiliza a caixa de texto de e-mail na pรกgina de login do Facebook. O elemento tem o ID โ€œE-mailโ€œ, e jรก havia sido acessado na seรงรฃo โ€œLocalizando por IDโ€. Agora, o mesmo elemento รฉ alvo usando um Selenium Seletor CSS com o atributo ID.

Sintaxe

css=tag#id

  • tag = a tag HTML do elemento que estรก sendo acessado
  • # = o sinal de cerquilha (ou hash), que deve estar sempre presente ao usar um Selenium Seletor CSS com ID
  • id = o ID do elemento que estรก sendo acessado

Lembre-se de que o ID รฉ sempre precedido por um sinal de cerquilha (#).

Passo 1) Acessar www.facebook.comUtilizando as ferramentas de desenvolvedor do seu navegador (ou uma ferramenta legada como o Firebug), inspecione a caixa de texto "Email ou Telefone".

Observe que a tag HTML รฉ โ€œentradae seu ID รฉ โ€œE-mailO seletor CSS completo torna-se, portanto, โ€œcss=entrada#e-mail".

Seletor CSS de tag e id em Selenium

Passo 2) Entrar "css=entrada#e-mail" no Target caixa de Selenium IDE e clique no botรฃo Localizar. Selenium O IDE destaca o elemento correspondente na pรกgina.

Selenium IDE destacando o campo de e-mail por meio de Tag e ID

Seletor CSS de Tag e Classe

Um seletor CSS em Selenium que usa uma tag HTML e um nome de classe segue a mesma ideia de tag e ID, mas um ponto (.) substitui o sinal de cerquilha.

Sintaxe

css=tag.class

  • tag = a tag HTML do elemento que estรก sendo acessado
  • . = o sinal de ponto, que deve sempre estar presente ao usar um seletor CSS com classe.
  • class = a classe do elemento que estรก sendo acessado

Passo 1) Abra a pรกgina de demonstraรงรฃo. https://demo.guru99.com/test/facebook.html e examine a caixa de texto โ€œEmail ou Telefoneโ€. Observe que a tag HTML รฉ โ€œentradae sua classe รฉ โ€œtexto de entrada".

Tag e classe - Seletor CSS em Selenium

Passo 2) In Selenium IDE, digite โ€œcss = entrada.inputtexto"Na Target caixa e clique em Localizar. Selenium O IDE reconhece a caixa de texto de e-mail ou telefone.

Selenium IDE localizando elemento por Tag e Classe

Observe que, quando vรกrios elementos compartilham a mesma tag HTML e classe, apenas o primeiro elemento correspondente no cรณdigo-fonte รฉ reconhecido. Examine a caixa de texto "Senha" na mesma pรกgina e observe que ela pertence ร  mesma classe que as caixas de texto "E-mail" ou "Telefone".

Vรกrios elementos que compartilham a mesma Tag e Classe

Na ilustraรงรฃo anterior, apenas a caixa de texto "E-mail" ou "Telefone" foi destacada porque aparece primeiro no cรณdigo-fonte da pรกgina.

Determinaรงรฃo da ordem do cรณdigo-fonte da pรกgina Selenium partida

Seletor CSS de tag e atributo

Essa estratรฉgia combina uma tag HTML com um atributo especรญfico pertencente ao elemento que vocรช deseja acessar.

Sintaxe

css=tag[attribute=value]

  • tag = a tag HTML do elemento que estรก sendo acessado
  • [ e ] = colchetes que envolvem o atributo e seu valor correspondente
  • atributo = o atributo a ser usado. Escolha um que seja exclusivo do elemento, como nome ou id.
  • valor = o valor correspondente do atributo escolhido.

Passo 1) Navegue atรฉ a Mercury Pรกgina de inscriรงรฃo para excursรตes https://demo.guru99.com/test/newtours/register.php e examine a caixa de texto โ€œSobrenomeโ€. Observe sua tag HTML (โ€œinputโ€) e seu atributo name (โ€œlastNameโ€).

Seletor CSS de tag e atributo em Selenium

Passo 2) In Selenium IDE, digite โ€œcss=input[nome=sobrenome]"Na Target caixa e clique em Localizar. Selenium O IDE localizou com sucesso o campo Sobrenome.

Selenium IDE localizando o sobrenome por meio de um atributo

Quando vรกrios elementos compartilham a mesma tag HTML e atributo, apenas o primeiro รฉ reconhecido. O comportamento รฉ idรชntico ao de localizar elementos com a mesma tag e classe.

Seletores CSS: Tag, Classe e Atributo

Sintaxe

css=tag.class[attribute=value]

  • tag = a tag HTML do elemento que estรก sendo acessado
  • . = o sinal de ponto, que deve sempre estar presente ao usar um seletor CSS com classe.
  • class = a classe do elemento que estรก sendo acessado
  • [ e ] = colchetes que envolvem um atributo especรญfico e seu valor correspondente
  • atributo = o atributo a ser usado. Escolha um que seja exclusivo do elemento, como nome ou id.
  • valor = o valor correspondente do atributo escolhido.

Passo 1) Abra a pรกgina de demonstraรงรฃo. https://demo.guru99.com/test/facebook.html e examine os campos de entrada โ€œEmail ou Telefoneโ€ e โ€œSenhaโ€. Observe a tag HTML, a classe e os atributos. Este exemplo usa o โ€œรญndice de tabulaรงรฃoatributo โ€.

Tag, classe e atributo - Seletor CSS

Passo 2) Acesse primeiro a caixa de texto โ€œE-mail ou Telefoneโ€ usando um valor de tabulaรงรฃo de 1. Digite โ€œcss=input.inputtext[tabindex=1]" para dentro Selenium IDE's Target Na caixa de diรกlogo, clique em "Localizar". O campo "E-mail" ou "Telefone" serรก destacado.

Selenium IDE localizando e-mail por tag, classe e atributo.

Passo 3) Para selecionar a caixa de entrada de senha, basta substituir o valor do รญndice tabulado. Digite โ€œcss=input.inputtext[tabindex=2]"Na Target caixa e clique em Localizar. Selenium O IDE localizou com sucesso a caixa de texto Senha.

Selenium IDE localizando senha por tag, classe e atributo.

Texto interno โ€“ Seletor CSS

Os rรณtulos HTML raramente recebem atributos como id, name ou class. Entรฃo, como vocรช pode acessรก-los em HTML? SeleniumA resposta estรก em seu texto interior. Os textos internos sรฃo os padrรตes de string reais que o rรณtulo HTML exibe na pรกgina.

Sintaxe

css=tag:contains("inner text")

  • tag = a tag HTML do elemento que estรก sendo acessado
  • texto interno = o conteรบdo de texto visรญvel do elemento

Passo 1) Navegue atรฉ a Mercury Pรกgina inicial dos passeios https://demo.guru99.com/test/newtours/ Examine o rรณtulo โ€œSenhaโ€. Observe sua tag HTML (โ€œfontโ€, neste caso) e note que o elemento nรฃo possui atributos de classe, id ou nome.

Texto interno - Inspeรงรฃo de seletores CSS

Passo 2) Formato css=font:contains(โ€œSenha:โ€) para dentro Selenium IDE's Target caixa e clique em Localizar. Selenium O IDE localiza o rรณtulo Senha conforme mostrado abaixo.

Selenium IDE localizando o rรณtulo da senha pelo texto interno

Passo 3) Desta vez, substitua o texto interno por โ€œBostonโ€ para que Target torna-se โ€œcss=font:contains(โ€œBostonโ€)Clique em "Localizar". A etiqueta "Boston a Sรฃo Francisco" estรก destacada, demonstrando que Selenium O IDE consegue localizar um rรณtulo longo mesmo quando apenas a primeira palavra do seu texto interno รฉ fornecida.

Selenium correspondรชncia parcial de texto interno IDE

Seletor CSS vs XPath em Selenium

Tanto os seletores CSS quanto o XPath sรฃo usados โ€‹โ€‹para identificar elementos da web em SeleniumApesar disso, elas possuem pontos fortes diferentes. A tabela abaixo compara as duas estratรฉgias de localizaรงรฃo em dimensรตes-chave:

Critรฉrios Seletor de CSS XPath
Agilidade (Speed) Mais rรกpido, funciona no mecanismo nativo do navegador. Mais lento, especialmente em navegadores mais antigos.
Direรงรฃo Somente encaminhar (de pai para filho) Para frente e para trรกs (da crianรงa para o pai)
Sintaxe Mais conciso e semelhante ร s regras CSS. Expressรตes de caminho hierรกrquicas mais longas
Correspondรชncia de texto Limitado ร  pseudoclasse :contains() Funรงรตes texto forte() e contรฉm()
Melhor para Layouts estรกticos e aplicativos web modernos Percurso complexo do DOM e localizadores baseados em texto

Melhores prรกticas para escrever seletores CSS em Selenium

Escrever seletores CSS confiรกveis โ€‹โ€‹vai alรฉm do conhecimento da sintaxe. As prรกticas a seguir ajudam os testadores a criar seletores estรกveis โ€‹โ€‹e de fรกcil manutenรงรฃo. Selenium Scripts que sobrevivem a alteraรงรตes na interface do usuรกrio:

  1. Atributos exclusivos preferenciais: Sempre escolha atributos como id, data-test-id ou name que sejam adicionados explicitamente para automaรงรฃo. Eles permanecem estรกveis โ€‹โ€‹mesmo quando o layout visual muda.
  2. Evite seletores excessivamente aninhados: Cadeias longas como div > div > ul > li > a Quebre facilmente quando os desenvolvedores refatorarem a marcaรงรฃo. Mantenha os seletores o mais curtos possรญvel.
  3. Use correspondรชncias parciais com sabedoria: Padrรตes como [class*="btn-primary"] toleram pequenas alteraรงรตes nos nomes das classes, mas tambรฉm podem corresponder a elementos nรฃo intencionais.
  4. Evite localizadores baseados em รญndice: Seletores como nth-child(3) sรฃo frรกgeis porque adicionar um elemento irmรฃo desloca todas as suas posiรงรตes.
  5. Validar seletores nas Ferramentas de Desenvolvedor: Antes de executar um Selenium No script, cole o seletor no Console das Ferramentas de Desenvolvedor do Chrome usando document.querySelector() Para confirmar, retorna exatamente um elemento.
  6. Combine atributos para garantir exclusividade: Quando uma classe รฉ compartilhada por muitos elementos, adicione um filtro de atributo como: input.form-control[name="email"] Para desambiguar o alvo.
  7. Documentar e reutilizar: Centralize os seletores dentro de uma classe Page Object para que uma รบnica atualizaรงรฃo corrija todos os testes que fazem referรชncia ao mesmo elemento.

Seguir essas diretrizes reduz a instabilidade, melhora a velocidade de execuรงรฃo dos testes e torna Selenium Suรญtes mais fรกceis de manter ao longo do tempo.

Resumo: Referรชncia rรกpida da sintaxe dos seletores CSS

A tabela abaixo consolida todas as informaรงรตes. Selenium Padrรตes de seletores CSS abordados neste guia:

Forma Target Sintaxe Exemplo
Etiqueta e ID css=tag#id css=entrada#e-mail
Etiqueta e classe css=tag.class css = entrada.inputtexto
Tag e Atributo css=tag[atributo=valor] css=input[nome=sobrenome]
Tag, classe e atributo css=tag.class[atributo=valor] css=input.inputtext[tabindex=1]
Texto interno css=tag:contains(โ€œtextoโ€) css=font:contains(โ€œSenha:โ€)

Perguntas Frequentes

Sim. Os seletores CSS geralmente sรฃo executados mais rapidamente do que o XPath porque os navegadores processam as regras CSS nativamente. A diferenรงa รฉ mais perceptรญvel em versรตes mais antigas do Internet Explorer, enquanto navegadores modernos como o Chrome e o XPath sรฃo mais rรกpidos. Firefox reduzir a diferenรงa.

Sim. Seletores CSS escritos para Selenium O IDE funciona diretamente em Selenium WebDriver atravรฉs de By.cssSelector()A รบnica diferenรงa รฉ que o WebDriver nรฃo exige o prefixo โ€œcss=โ€, jรก que o tipo de localizador รฉ especificado pelo prรณprio mรฉtodo.

Nรฃo. O Firebug foi descontinuado em 2017 apรณs ser incorporado ao Firefox Ferramentas de desenvolvedor. Atualmente, os testadores usam as ferramentas de desenvolvedor integradas ao Chrome. Firefoxou Edge para inspecionar elementos e validar seletores CSS antes de adicionรก-los. Selenium scripts.

Sim. Ferramentas com inteligรชncia artificial, como TestimMabl e ChatGPT podem sugerir seletores CSS analisando o DOM. Eles reduzem o esforรงo de manutenรงรฃo adaptando os seletores quando os desenvolvedores renomeiam classes ou reestruturam a pรกgina.

Mecanismos de autorreparaรงรฃo baseados em IA analisam o DOM circundante e se recuperam automaticamente de localizadores quebrados. Quando um seletor CSS falha, o mecanismo identifica o elemento correspondente mais prรณximo usando similaridade de atributos, conteรบdo de texto e padrรตes histรณricos, restaurando a estabilidade do teste.

Use padrรตes de correspondรชncia parcial, como [id^="user_"] para prefixos, [id$="_btn"] para sufixos, ou [id*="cart"] para substrings. Esses padrรตes correspondem a IDs gerados dinamicamente sem exigir um valor exato.

Os seletores CSS nรฃo conseguem percorrer de um elemento filho para o seu elemento pai e oferecem suporte limitado ร  correspondรชncia de texto. Nesses casos, o XPath continua sendo a melhor opรงรฃo. O CSS tambรฉm nรฃo possui funรงรตes integradas para lรณgica de irmรฃos alรฉm de elementos adjacentes e irmรฃos em geral.

Abra as Ferramentas de Desenvolvedor do navegador, mude para a aba Console e execute document.querySelectorAll("your-selector")A NodeList retornada mostra todos os elementos correspondentes. Uma forma confiรกvel de realizar essa tarefa. Selenium O localizador deve retornar exatamente um elemento para segmentaรงรฃo รบnica.

Resuma esta postagem com: