Path no Selenium WebDriver Tutorial: Como encontrar XPath?

Na automação do Selenium, se os elementos não forem encontrados pelos localizadores gerais, como id, classe, nome, etc., o XPath é usado para localizar um elemento na página da web.

Neste tutorial, aprenderemos sobre o xpath e as diferentes expressões XPath para encontrar os elementos complexos ou dinâmicos, cujos atributos mudam dinamicamente na atualização ou em qualquer operação.

Neste tutorial XPath, você aprenderá-

O que é XPath no Selenium?

XPath em Selênio é 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 a 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.

O formato básico do XPath em selênio é explicado abaixo com captura de tela.

Formato básico de XPath

Sintaxe para selênio XPath:

XPath contém o caminho do elemento situado na página da web. A sintaxe XPath padrão para criar XPath é.

 Xpath=//tagname[@attribute='value']
  • //: Selecione o nó atual.
  • Tagname: Tagname do nó específico.
  • @: Selecione o atributo.
  • Atributo: Nome do atributo do nó.
  • Valor: Valor do atributo.

Para encontrar o elemento em páginas da web com precisão, existem diferentes tipos de localizadores:

Localizadores XPath Encontre diferentes elementos na página da web
EU IA Para encontrar o elemento por ID do elemento
Nome da classe Para encontrar o elemento por Classname 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 localizar o elemento dinâmico e percorrer entre vários elementos da página da web
Caminho CSS O caminho CSS também localiza elementos sem nome, classe ou ID.

Tipos de X-path

Existem dois tipos de XPath:

1) XPath Absoluto

2) XPath Relativo

XPath absoluto:

É a maneira direta de localizar o elemento, mas a desvantagem do XPath absoluto é que, se houver alguma alteração feita no caminho do elemento, esse 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 http://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 relativo:

Xpath Relativo começa no meio da estrutura HTML DOM. Ele 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 no meio da estrutura HTML DOM. 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 o elemento pelo 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

O que são eixos XPath.

Os eixos XPath pesquisam nós diferentes no documento XML a partir do nó de contexto atual. Os eixos XPath são os métodos usados ​​para localizar elementos dinâmicos, que de outra forma não seriam possíveis pelo método XPath normal sem ID, nome de classe, nome, etc.

Os métodos dos 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 Webdriver como filho, pai, ancestral, irmão, precedente, eu, etc.

Usando XPath Handling complexos e elementos dinâmicos no Selenium

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 http://demo.guru99.com/test/selenium-xpath.html

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='http://demo.guru99.com/'] Xpath= //img[@src='//cdn.guru99.com/images/home/java.png'] 

2) Contém ():

Contains () é 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 de contenção tem a capacidade de localizar o elemento com texto parcial, conforme mostrado no exemplo XPath abaixo.

Neste exemplo, tentamos identificar o elemento usando apenas o valor de texto parcial do atributo. Na expressão XPath abaixo, o valor parcial 'sub' é usado no lugar do botão de envio. 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 o '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 'name' começa com 'btn'.

Da mesma forma, na expressão abaixo, consideramos o 'id' como um atributo e a 'mensagem' 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 'nome' começa com 'mensagem'.

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

Na expressão abaixo, tomamos 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 OR & AND:

Na expressão OR, duas condições são usadas, se a 1ª condição OU a 2ª condição devem ser verdadeiras. Também é aplicável se qualquer uma das condições for verdadeira ou talvez ambas. Significa que qualquer condição deve ser verdadeira para encontrar o elemento.

Na expressão XPath abaixo, ele identifica os elementos cuja única ou ambas as condições são verdadeiras.

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

Destacando ambos os elementos como o elemento 'LOGIN' com o atributo 'tipo' e o elemento 'RESET' com o atributo 'nome'.

Na expressão AND, duas condições são usadas, ambas as condições devem ser verdadeiras para encontrar o elemento. Ele falha em encontrar o elemento se qualquer uma das condições for falsa.

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

Na expressão abaixo, destacando o elemento 'LOGIN', pois possui os atributos 'tipo' e 'nome'.

4) Xpath Starts-with

XPath começa com () é uma função usada para localizar o elemento da web cujo valor de 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 localizar o elemento cujo valor de atributo muda dinamicamente. Você também pode encontrar elementos cujo valor de atributo é estático (não muda).

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

Id = 'mensagem12'

Id = 'message345'

Id = 'message8769'

e assim por diante .. mas o texto inicial é o mesmo. Nesse caso, usamos a expressão Start-with.

Na expressão abaixo, há dois elementos com um id começando com 'mensagem' (ou seja, 'ID do usuário não deve estar em branco' e 'A senha não deve estar em branco'). No exemplo abaixo, XPath encontra aqueles elementos cujo 'ID' começa com 'mensagem'.

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

5) Função XPath Text ()

O Função de texto XPath () é uma função interna do selênio 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 forma de string.

Nesta expressão, com função de texto, encontramos o elemento com correspondência de texto exata conforme mostrado abaixo. No nosso caso, encontramos o elemento com o texto 'UserID'.

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

6) Métodos de eixos XPath:

Esses métodos de eixos XPath são usados ​​para localizar os elementos complexos ou dinâmicos. Abaixo veremos alguns desses métodos.

Para ilustrar o método dos eixos XPath, usaremos o site de demonstração do banco Guru99.

a) 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 'seguinte' a senha do eixo, login e botão de reinicialização. Se quiser focar 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'.

b) Ancestral:

O eixo ancestral seleciona todos os elementos ancestrais (avós, pais, etc.) do nó atual, conforme mostrado na tela abaixo.

Na expressão abaixo, estamos encontrando o elemento ancestral do nó atual (nó 'TESTE DE EMPRESA').

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

Existem 13 nós 'div' correspondentes usando o eixo 'ancestral'. Se você deseja se concentrar em qualquer elemento em particular, você pode usar o XPath abaixo, onde você altera o número 1, 2 de acordo com 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.

c) 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ê deseja focar em qualquer elemento em particular, 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.

d) Precedendo:

Selecione todos os nós que vêm antes do nó atual, conforme mostrado na tela abaixo.

Na expressão abaixo, ele identifica todos os elementos de entrada antes do botão 'LOGIN' que é 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 você deseja se concentrar em qualquer elemento em particular, 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.

e) Irmão Seguidor:

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

Uma correspondência de nós de entrada usando o eixo 'irmão seguinte'.

f) 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 você deseja se concentrar em qualquer elemento em particular, 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.

g) Próprio:

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

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

h) Descendente:

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

Na expressão abaixo, ele identifica todos os descendentes do elemento ao elemento atual (elemento de quadro 'Main body surround') que significa abaixo do nó (nó filho, nó neto, etc.).

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

Existem 12 nós de 'link' correspondentes usando o eixo 'descendente'. Se você deseja se concentrar em qualquer elemento em particular, 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.

Resumo:

XPath é necessário para localizar um elemento na página da web para fazer uma operação naquele elemento específico.

  • Existem dois tipos de selênio XPath:
    • XPath absoluto
    • XPath Relativo
  • Os 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 de classe, etc. do documento XML.