XPath em Selenium: Tutorial
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.

- //: 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 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]
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
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'.
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')]
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')]
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'.
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'.
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')]
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']
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
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'.
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
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
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
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
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
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.
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
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
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

















