XPath em Selenium: Tutorial

XPath em Selenium

O que รฉ XPath em Selenium?

XPath em Selenium รฉ um caminho XML usado para navegaรงรฃo pela estrutura HTML da pรกgina. ร‰ uma sintaxe ou linguagem para localizar qualquer elemento em uma pรกgina da web usando uma expressรฃo de caminho XML. XPath pode ser usado para documentos HTML e XML para encontrar a localizaรงรฃo de qualquer elemento em uma pรกgina da web usando a estrutura HTML DOM.

In Selenium Na automaรงรฃo, se os elementos nรฃo forem encontrados pelos localizadores gerais como id, classe, nome, etc., o XPath รฉ usado para encontrar um elemento na pรกgina da web.

Neste tutorial, aprenderemos sobre o XPath e diferentes expressรตes XPath para encontrar os elementos complexos ou dinรขmicos, cujos atributos mudam dinamicamente na atualizaรงรฃo ou em qualquer operaรงรฃo.

Sintaxe XPath

XPath contรฉm o caminho do elemento situado na pรกgina web. A sintaxe XPath padrรฃo para criar XPath รฉ.

Xpath=//tagname[@attribute='value']

O formato bรกsico do XPath no Selenium รฉ explicado abaixo com uma captura de tela.

Sintaxe XPath
Formato Bรกsico de XPath
  • //: Selecione o nรณ atual.
  • Nome da etiqueta: Tagname do nรณ especรญfico.
  • @: Selecione o atributo.
  • Atributo: Nome do atributo do nรณ.
  • Valor: Valor do atributo.

Para encontrar o elemento nas pรกginas da web com precisรฃo, existem diferentes tipos de localizadores:

Localizadores XPath Encontre diferentes elementos na pรกgina da web
ID Para encontrar o elemento pelo ID do elemento
Nome da classe Para encontrar o elemento pelo nome da classe do elemento
Nome Para encontrar o elemento pelo nome do elemento
Texto do link Para encontrar o elemento pelo texto do link
XPath XPath necessรกrio para encontrar o elemento dinรขmico e percorrer vรกrios elementos da pรกgina da web
Caminho CSS O caminho CSS tambรฉm localiza elementos sem nome, classe ou ID.

Tipos de caminho X

Existem dois tipos de XPath:

1) XPath absoluto

2) XPath relativo

XPath absoluto

ร‰ a maneira direta de encontrar o elemento, mas a desvantagem do XPath absoluto รฉ que, se houver alguma alteraรงรฃo feita no caminho do elemento, o XPath falharรก.

A principal caracterรญstica do XPath รฉ que ele comeรงa com uma รบnica barra (/), o que significa que vocรช pode selecionar o elemento do nรณ raiz.

Abaixo estรก o exemplo de uma expressรฃo Xpath absoluta do elemento mostrado na tela abaixo.

NOTA: Vocรช pode praticar o seguinte exercรญcio XPath neste https://demo.guru99.com/test/selenium-xpath.html

Clique aqui. se o vรญdeo nรฃo estiver acessรญvel

XPath absoluto:

/html/body/div[2]/div[1]/div/h4[1]/b/html[1]/body[1]/div[2]/div[1]/div[1]/h4[1]/b[1]

XPath absoluto
XPath absoluto

Xpath Relativo

Xpath Relativo comeรงa no meio da estrutura HTML DOM. Comeรงa com barra dupla (//). Ele pode pesquisar elementos em qualquer lugar da pรกgina da web, o que significa que nรฃo hรก necessidade de escrever um xpath longo e vocรช pode comeรงar do meio da estrutura HTML DOM. O Xpath relativo รฉ sempre preferido, pois nรฃo รฉ um caminho completo do elemento raiz.

Abaixo estรก o exemplo de uma expressรฃo XPath relativa do mesmo elemento mostrado na tela abaixo. Este รฉ o formato comum usado para localizar elementos por XPath.

Clique aqui. se o vรญdeo nรฃo estiver acessรญvel

Relative XPath: //div[@class='featured-box cloumnsize1']//h4[1]//b[1]

XPath relativo
XPath relativo

O que sรฃo eixos XPath?

Os Eixos XPath pesquisam diferentes nรณs no documento XML a partir do nรณ de contexto atual. Os Eixos XPath sรฃo os mรฉtodos usados โ€‹โ€‹para encontrar elementos dinรขmicos, o que de outra forma nรฃo seria possรญvel com mรฉtodos XPath normais sem ID, nome de classe, nome, etc. XPath em Selenium inclui vรกrios mรฉtodos, como Contains, AND, Absolute XPath e Relative XPath para identificar e localizar elementos dinรขmicos com base em vรกrios atributos e condiรงรตes.

Os mรฉtodos de eixos sรฃo usados โ€‹โ€‹para encontrar esses elementos, que mudam dinamicamente na atualizaรงรฃo ou em qualquer outra operaรงรฃo. Existem poucos mรฉtodos de eixos comumente usados โ€‹โ€‹em Selenium Driver da Web como filho, pai, ancestral, irmรฃo, precedente, eu, etc.

Como escrever XPath dinรขmico Selenium webdriver

1) XPath bรกsico

A expressรฃo XPath seleciona nรณs ou lista de nรณs com base em atributos como ID, Nome, Nome da Classe, etc. do documento XML, conforme ilustrado abaixo.

Xpath=//input[@name='uid']

Aqui estรก um link para acessar a pรกgina https://demo.guru99.com/test/selenium-xpath.html

XPath bรกsico
XPath bรกsico

Algumas expressรตes XPath mais bรกsicas:

Xpath=//input[@type='text']
Xpath=//label[@id='message23']
Xpath=//input[@value='RESET']
Xpath=//*[@class='barone']
Xpath=//a[@href='https://demo.guru99.com/']
Xpath=//img[@src='//guru99.com/images/home/java.png']

2) Contรฉm()

Contรฉm() รฉ um mรฉtodo usado na expressรฃo XPath. ร‰ usado quando o valor de qualquer atributo muda dinamicamente, por exemplo, informaรงรตes de login.

O recurso conter tem a capacidade de localizar o elemento com texto parcial, conforme mostrado no exemplo XPath abaixo.

Neste exemplo, tentamos identificar o elemento apenas usando o valor de texto parcial do atributo. Na expressรฃo XPath abaixo, o valor parcial 'sub' รฉ usado no lugar do botรฃo enviar. Pode-se observar que o elemento foi encontrado com sucesso.

O valor completo de 'Tipo' รฉ 'enviar', mas usando apenas o valor parcial 'sub'.

Xpath=//*[contains(@type,'sub')]

O valor completo de 'nome' รฉ 'btnLogin', mas usando apenas o valor parcial 'btn'.

Xpath=//*[contains(@name,'btn')]

Na expressรฃo acima, consideramos โ€˜nomeโ€™ como um atributo e โ€˜btnโ€™ como um valor parcial, conforme mostrado na imagem abaixo. Isso encontrarรก 2 elementos (LOGIN e RESET), pois o atributo 'nome' comeรงa com 'btn'.

Contรฉm ()

Da mesma forma, na expressรฃo abaixo, consideramos โ€˜idโ€™ como um atributo e โ€˜messageโ€™ como um valor parcial. Isso encontrarรก 2 elementos ('ID do usuรกrio nรฃo deve estar em branco' e 'A senha nรฃo deve estar em branco'), pois seu atributo 'id' comeรงa com 'mensagem'.

Xpath=//*[contains(@id,'message')]

Contรฉm ()

Na expressรฃo abaixo, consideramos o โ€œtextoโ€ do link como um atributo e 'aqui' como um valor parcial, conforme mostrado na imagem abaixo. Isso encontrarรก o link ('aqui'), pois exibe o texto 'aqui'.

Xpath=//*[contains(text(),'here')]
Xpath=//*[contains(@href,'guru99.com')]

Contรฉm ()

3) Usando OU e E

Na expressรฃo OR, duas condiรงรตes sรฃo usadas, se a 1ยช condiรงรฃo OU a 2ยช condiรงรฃo deve ser verdadeira. Tambรฉm รฉ aplicรกvel se alguma condiรงรฃo for verdadeira ou talvez ambas. Significa que qualquer condiรงรฃo deve ser verdadeira para encontrar o elemento.

Na expressรฃo XPath abaixo, ela identifica os elementos cujas condiรงรตes รบnicas ou ambas sรฃo verdadeiras.

Xpath=//*[@type='submit' or @name='btnReset']

Destacando ambos os elementos como sendo o elemento โ€œLOGINโ€, que possui o atributo 'type', e o elemento โ€œRESETโ€, que possui o atributo 'name'.

Usando OU e E

Na expressรฃo AND, duas condiรงรตes sรฃo usadas, ambas as condiรงรตes devem ser verdadeiras para encontrar o elemento. Ele nรฃo consegue encontrar o elemento se alguma condiรงรฃo for falsa.

Xpath=//input[@type='submit' and @name='btnLogin']

Na expressรฃo abaixo, destacando o elemento 'LOGIN' por possuir os atributos 'tipo' e 'nome'.

Usando OU e E

4) XPath comeรงa com

XPath comeรงa com() รฉ uma funรงรฃo usada para localizar o elemento da web cujo valor do atributo รฉ alterado na atualizaรงรฃo ou por outras operaรงรตes dinรขmicas na pรกgina da web. Neste mรฉtodo, o texto inicial do atributo รฉ correspondido para encontrar o elemento cujo valor do atributo muda dinamicamente. Vocรช tambรฉm pode encontrar elementos cujo valor de atributo รฉ estรกtico (nรฃo alterado).

Por exemplo -: Suponha que o ID de um elemento especรญfico mude dinamicamente como:

Id=โ€mensagem12โ€ณ

Id=โ€mensagem345โ€ณ

Id=โ€mensagem8769โ€ณ

e assim por diante.. mas o texto inicial รฉ o mesmo. Neste caso, usamos a expressรฃo Start-with.

Na expressรฃo abaixo, existem dois elementos com um id iniciando โ€œmensagemโ€ (ou seja, 'User-ID nรฃo deve estar em branco' e 'Senha nรฃo deve estar em branco'). No exemplo abaixo, XPath encontra aqueles elementos cujo 'ID' comeรงa com 'message'.

Xpath=//label[starts-with(@id,'message')]

XPath comeรงa com

5) Funรงรฃo XPath Text()

O Funรงรฃo XPath texto() รฉ uma funรงรฃo integrada do Selenium webdriver que รฉ usada para localizar elementos com base no texto de um elemento da web. Ajuda a encontrar os elementos de texto exatos e localiza os elementos dentro do conjunto de nรณs de texto. Os elementos a serem localizados devem estar em formato de string.

Nesta expressรฃo, com funรงรฃo de texto, encontramos o elemento com correspondรชncia exata de texto conforme mostrado abaixo. No nosso caso, encontramos o elemento com o texto โ€œUserIDโ€.

Xpath=//td[text()='UserID']

Funรงรฃo XPath Text()

Mรฉtodos de eixos XPath

Esses mรฉtodos de eixos XPath sรฃo usados โ€‹โ€‹para encontrar os elementos complexos ou dinรขmicos. Abaixo veremos alguns desses mรฉtodos.

Para ilustrar esse mรฉtodo de eixos XPath, usaremos o GuruSite de demonstraรงรฃo do banco 99.

1) Seguindo

Seleciona todos os elementos no documento do nรณ atual () [a caixa de entrada UserID รฉ o nรณ atual] conforme mostrado na tela abaixo.

Xpath=//*[@type='text']//following::input

Seguir

Existem 3 nรณs de โ€œentradaโ€ correspondentes usando o eixo โ€œseguinteโ€ - senha, login e botรฃo de reset. Se quiser se concentrar em qualquer elemento especรญfico, vocรช pode usar o mรฉtodo XPath abaixo:

Xpath=//*[@type='text']//following::input[1]

Vocรช pode alterar o XPath de acordo com o requisito colocando [1],[2]โ€ฆโ€ฆโ€ฆโ€ฆ e assim por diante.

Com a entrada como '1', a captura de tela abaixo encontra o nรณ especรญfico que รฉ o elemento da caixa de entrada 'Senha'.

Seguir

2) Ancestral

O eixo ancestral seleciona todos os elementos ancestrais (avรด, pai, etc.) do nรณ atual, conforme mostrado na tela abaixo.

Na expressรฃo abaixo, estamos encontrando o elemento ancestral do nรณ atual (nรณ โ€œENTERPRISE TESTINGโ€).

Xpath=//*[text()='Enterprise Testing']//ancestor::div

Antepassado

Existem 13 nรณs โ€œdivโ€ correspondentes usando o eixo โ€œancestralโ€. Se quiser se concentrar em qualquer elemento especรญfico, vocรช pode usar o XPath abaixo, onde altera o nรบmero 1, 2 conforme sua necessidade:

Xpath=//*[text()='Enterprise Testing']//ancestor::div[1]

Vocรช pode alterar o XPath de acordo com o requisito colocando [1], [2]โ€ฆโ€ฆโ€ฆโ€ฆ e assim por diante.

3) Crianรงa

Seleciona todos os elementos filhos do nรณ atual (Java) conforme mostrado na tela abaixo.

Xpath=//*[@id='java_technologies']//child::li

Crianรงa

Existem 71 nรณs โ€œliโ€ correspondentes usando o eixo โ€œfilhoโ€. Se vocรช quiser se concentrar em qualquer elemento especรญfico, vocรช pode usar o xpath abaixo:

Xpath=//*[@id='java_technologies']//child::li[1]

Vocรช pode alterar o xpath de acordo com o requisito colocando [1],[2]โ€ฆโ€ฆโ€ฆโ€ฆ e assim por diante.

4) Precedente

Selecione todos os nรณs anteriores ao nรณ atual, conforme mostrado na tela abaixo.

Na expressรฃo abaixo, identifica todos os elementos de entrada antes do botรฃo โ€œLOGINโ€ que estรก ID do usuรกrio e senha elemento de entrada.

Xpath=//*[@type='submit']//preceding::input

Precedente

Existem 2 nรณs de โ€œentradaโ€ correspondentes usando o eixo โ€œprecedenteโ€. Se quiser se concentrar em qualquer elemento especรญfico, vocรช pode usar o XPath abaixo:

Xpath=//*[@type='submit']//preceding::input[1]

Vocรช pode alterar o xpath de acordo com o requisito colocando [1],[2]โ€ฆโ€ฆโ€ฆโ€ฆ e assim por diante.

5) Irmรฃo seguinte

Selecione os seguintes irmรฃos do nรณ de contexto. Os irmรฃos estรฃo no mesmo nรญvel do nรณ atual, conforme mostrado na tela abaixo. Ele encontrarรก o elemento apรณs o nรณ atual.

xpath=//*[@type='submit']//following-sibling::input

Irmรฃo seguinte

Correspondรชncia de nรณs de uma entrada usando o eixo โ€œirmรฃo seguinteโ€.

6) Pai

Seleciona o pai do nรณ atual conforme mostrado na tela abaixo.

Xpath=//*[@id='rt-feature']//parent::div

Principal

Existem 65 nรณs โ€œdivโ€ correspondentes usando o eixo โ€œpaiโ€. Se quiser se concentrar em qualquer elemento especรญfico, vocรช pode usar o XPath abaixo:

Xpath=//*[@id='rt-feature']//parent::div[1]

Vocรช pode alterar o XPath de acordo com o requisito colocando [1],[2]โ€ฆโ€ฆโ€ฆโ€ฆ e assim por diante.

7) Eu

Seleciona o nรณ atual ou 'self' significa que indica o prรณprio nรณ conforme mostrado na tela abaixo.

Eu

Correspondรชncia de um nรณ usando o eixo โ€œselfโ€. Ele sempre encontra apenas um nรณ, pois representa o elemento prรณprio.

Xpath =//*[@type='password']//self::input

8) Descendente

Seleciona os descendentes do nรณ atual conforme mostrado na tela abaixo.

Na expressรฃo abaixo, ele identifica todos os elementos descendentes do elemento atual (elemento do quadro 'corpo principal surround'), o que significa abaixo do nรณ (nรณ filho, nรณ neto, etc.).

Xpath=//*[@id='rt-feature']//descendant::a

Descendente

Existem 12 nรณs โ€œlinkโ€ correspondentes usando o eixo โ€œdescendenteโ€. Se quiser se concentrar em qualquer elemento especรญfico, vocรช pode usar o XPath abaixo:

Xpath=//*[@id='rt-feature']//descendant::a[1]

Vocรช pode alterar o XPath de acordo com o requisito colocando [1],[2]โ€ฆโ€ฆโ€ฆโ€ฆ e assim por diante.

Perguntas Frequentes

XPath (XML Path Language) รฉ usado para navegar entre elementos e atributos em um XML. XML ou documento HTML. Ele ajuda a identificar e recuperar nรณs especรญficos, tornando-se essencial na extraรงรฃo de dados da web.ping, processamento de dados XML e ferramentas de teste automatizadas como Selenium para localizar elementos da web.

Use XPath quando precisar localizar elementos web complexos ou que mudam dinamicamente e que nรฃo podem ser facilmente identificados usando localizadores mais simples, como ID ou nome da classe. ร‰ ideal para navegar em estruturas hierรกrquicas, selecionar nรณs por atributos e lidar com elementos sem identificadores รบnicos.

Os localizadores em XPath sรฃo expressรตes usadas para identificar elementos dentro da estrutura de um documento. Eles especificam caminhos para nรณs usando atributos, texto, hierarquia ou posiรงรฃo. Estratรฉgias comuns de localizaรงรฃo incluem selecionar elementos por nome de tag, valores de atributos, correspondรชncias parciais ou combinaรงรตes lรณgicas de condiรงรตes.

XPath รฉ de dois tipos: XPath absoluto e XPath relativo.

  • XPath absoluto Comeรงa no nรณ raiz (por exemplo, /html/body/โ€ฆ) e fornece o caminho completo.
  • XPath relativo comeรงa em qualquer nรณ (por exemplo, //div[@id='content']) e รฉ mais flexรญvel e fรกcil de manter.

Uma barra simples (/) seleciona nรณs diretamente abaixo do nรณ raiz ou atual, representando um caminho absoluto. Uma barra dupla (//) pesquisa nรณs em qualquer lugar do documento, independentemente da hierarquia, tornando-a mais flexรญvel para encontrar elementos sem especificar o caminho completo.

Sim, o XPath diferencia maiรบsculas de minรบsculas. Os nomes dos elementos, os nomes dos atributos e os valores devem corresponder exatamente como aparecem no documento. Por exemplo, //div e //DIV sรฃo tratados de forma diferente. Para lidar com a insensibilidade a maiรบsculas e minรบsculas, funรงรตes como translate() podem ser usadas em expressรตes XPath.

Resumo

XPath รฉ necessรกrio para encontrar um elemento na pรกgina da web e realizar uma operaรงรฃo nesse elemento especรญfico.

  • Existem dois tipos de XPath de selรชnio:
    • XPath absoluto
    • XPath relativo
  • Eixos XPath sรฃo os mรฉtodos usados โ€‹โ€‹para encontrar elementos dinรขmicos, que de outra forma nรฃo seriam possรญveis de encontrar pelo mรฉtodo XPath normal
  • A expressรฃo XPath seleciona nรณs ou lista de nรณs com base em atributos como ID, Nome, Nome da classe, etc. do documento XML.

Verifique tambรฉm: - Selenium Tutorial para iniciantes: Aprenda WebDriver em 7 dias

Resuma esta postagem com: