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?
- Tipos de X-path
- XPath absoluto
- XPath Relativo
- XPath básico
- Contém ()
- Usando OR & AND
- Começa com função
- Texto()
- Métodos de eixos XPath
- Seguindo
- Antepassado
- Criança
- Precedente
- Irmão seguidor
- Pai
- Auto
- Descendente
O que é XPath no Selenium?
XPath no 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 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ó particular.
- @: 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 encontrar 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:
O 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
XPath relativo: // div [@ class = 'feature-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 encontrar 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 alguns métodos de eixos comumente usados no Selenium Webdriver como filho, pai, ancestral, irmão, precedente, próprio, 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 de 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 = // rótulo [@ 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.webp ']
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 = // * [contém (@ type, 'sub')]
O valor completo de 'nome' é 'btnLogin', mas usando apenas o valor parcial 'btn'.
Xpath = // * [contém (@ nome, '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 = // * [contém (@ id, 'mensagem')]
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 = // * [contém (text (), 'aqui')]Xpath = // * [contém (@ 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 cujas condições únicas ou ambas são verdadeiras.
Xpath = // * [@ type = 'enviar' ou @ name = 'btnReset']
Destacando ambos os elementos como elemento "LOGIN" com atributo 'type' e elemento "RESET" com atributo 'name'.
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 alguma condição 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 starts-with () é 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 = "mensagem345"
Id = "message8769"
e assim por diante ... mas o texto inicial é o mesmo. Nesse caso, usamos a expressão Start-with.
Na expressão a seguir, 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 = // rótulo [começa com (@ id, 'mensagem')]
5) Função XPath Text ()
A função XPath text () é uma função interna 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 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'] // seguindo :: input
Existem 3 nós de "entrada" que combinam usando o eixo "seguinte" - senha, login e botão de reset. Se você deseja se concentrar em qualquer elemento em particular, você pode usar o método XPath abaixo:
Xpath = // * [@ type = 'text'] // seguindo :: 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ê quiser se concentrar em qualquer elemento específico, 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ê quiser se concentrar 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 é o elemento de entrada de ID de usuário e senha .
Xpath = // * [@ type = 'submit'] // precedendo :: input
Existem 2 nós de "entrada" correspondentes usando o eixo "anterior". Se você deseja se concentrar em qualquer elemento específico, você pode usar o XPath abaixo:
Xpath = // * [@ type = 'submit'] // precedendo :: 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'] // pai :: div
Existem 65 nós "div" correspondentes usando o eixo "pai". Se você deseja se concentrar em qualquer elemento em particular, 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.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 = 'senha'] // 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'] // descendente :: a
Existem 12 nós de "link" correspondentes usando o eixo "descendente". Se você deseja se concentrar em qualquer elemento específico, você pode usar o XPath abaixo:
Xpath = // * [@ id = 'rt-feature'] // descendente :: 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 localizar 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.