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.

  • ๐ŸŽ“ FoundationPrincรญpio: Utilize primeiro os localizadores de ID, pois sรฃo รบnicos e proporcionam a identificaรงรฃo de elementos mais rรกpida e estรกvel.
  • ๐Ÿš€ Foco na implementaรงรฃo: Aplicar localizadores de nome com atributos de filtro para diferenciar elementos que compartilham valores de nome idรชnticos, como botรตes de opรงรฃo.
  • ๐Ÿ’ก Tรฉcnica Avanรงada: Utilize mรฉtodos DOM como getElementById, getElementsByName e indexaรงรฃo de formulรกrios para acessar elementos profundamente aninhados.
  • ๐Ÿ€ Estratรฉgia de otimizaรงรฃo: Escolha XPath para elementos que nรฃo possuem atributos de classe, nome ou ID, mas equilibre a flexibilidade com a sobrecarga de manutenรงรฃo do script.
  • ๐Ÿ‘œ Impacto na Qualidade: Selecionar o tipo de localizador correto afeta diretamente a confiabilidade do script, a velocidade de execuรงรฃo e a manutenรงรฃo de testes a longo prazo.

Localizando por ID em Selenium

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โ€.

Localizando por ID em Selenium

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.

Localizaรงรฃo por verificaรงรฃo de identidade

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.

Localizando por nome em Selenium

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.

Localizaรงรฃo por verificaรงรฃo de nome

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.

Localize o elemento por nome usando filtros

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.

Filtrar por atributo de valor

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.

Comando de clique com 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.

Verificaรงรฃo de filtro

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.

Uma das opรงรตes selecionadas

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.

Localizaรงรฃo por texto do link

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

Texto do link em Target

Passo 4) Clique no botรฃo Localizar. Selenium O IDE destacarรก corretamente o link REGISTER.

Texto do link destacado

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.

Pรกgina de inscriรงรฃo

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.

Inspeรงรฃo getElementById

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.

Verificaรงรฃo getElementById

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.

ilustraรงรฃo getElementById getElementById
Retorna apenas um elemento. Esse elemento possui o ID especificado dentro dos parรชnteses de getElementById().
ilustraรงรฃo getElementsByName getElementsByName
Retorna uma coleรงรฃo de elementos cujos nomes sรฃo idรชnticos. Cada elemento รฉ indexado por um nรบmero a partir de 0, como em um array. Vocรช seleciona um elemento especรญfico colocando seu รญndice dentro dos colchetes na sintaxe 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) 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โ€.

Inspeรงรฃo getElementsByName

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".

Classe Econรดmica Localizada

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.

Classe Executiva Localizada

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โ€.

dom:nome Inspeรงรฃo

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.

dom:name Verificaรงรฃo

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.

dom:index Inspeรงรฃo

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.

dom:index Verificaรงรฃo

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.

dom:index por Nome

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.

Inspeรงรฃo de elementos XPath

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

Copiar opรงรฃo 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 โ€œ//โ€.

XPath colado

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

Verificaรงรฃo XPath

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.

  1. 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.
  2. 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.
  3. 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'].
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.

Perguntas Frequentes

O localizador por ID รฉ o mais rรกpido porque os navegadores otimizam as buscas por identificadores รบnicos. Quando os IDs nรฃo estรฃo disponรญveis, o Nome e o Seletor CSS geralmente sรฃo mais rรกpidos do que o XPath, que percorre o DOM de forma mais extensa durante a resoluรงรฃo do elemento.

O XPath absoluto comeรงa na raiz do documento HTML e segue um caminho completo, o que o torna frรกgil. O XPath relativo comeรงa em qualquer lugar no DOM usando atributos como //input[@id='email'], oferecendo uma segmentaรงรฃo de elementos mais estรกvel e fรกcil de manter.

O Firebug foi descontinuado em 2017. Os navegadores modernos incluem ferramentas de desenvolvedor integradas, acessรญveis pela tecla F12 no Chrome, Edge e outros. FirefoxEssas ferramentas oferecem inspeรงรฃo de elementos, cรณpia de XPath, cรณpia de seletores CSS e testes no console para validaรงรฃo de localizadores.

Sim. Ferramentas com inteligรชncia artificial, como TestimMabl e Functionize analisam o DOM e geram localizadores com capacidade de autorreparaรงรฃo. Essas plataformas usam aprendizado de mรกquina para ajustar os localizadores automaticamente quando a interface do usuรกrio muda, reduzindo a necessidade de manutenรงรฃo e falhas em testes inconsistentes.

Mecanismos de autorreparaรงรฃo baseados em IA aprendem os atributos, a posiรงรฃo e o contexto DOM de cada elemento ao seu redor. Quando o localizador original falha, o mecanismo seleciona a correspondรชncia mais prรณxima usando pontuaรงรตes de probabilidade, permitindo que os scripts de teste continuem sendo executados sem intervenรงรฃo manual.

Resuma esta postagem com: