Pular para o conteúdo
SDETRole
SDETRole

Glossário · Automação de UI

XPath

Também chamado de: expressão XPath, expressões XPath, XPaths, XPath locator

Definição

Linguagem de consulta para selecionar nós em um documento XML ou HTML, usada na automação de UI para localizar elementos por estrutura, atributos ou texto.

O XPath (XML Path Language) descreve um caminho pela árvore do documento até os nós que você quer. Na automação de testes, é uma das formas de escrever um locator, e sua principal vantagem sobre o CSS é poder buscar pelo conteúdo de texto e caminhar em qualquer direção: subir até um pai, ir para um irmão ou descer até um descendente. Os navegadores implementam o XPath 1.0, então funções de versões posteriores, como matches() ou lower-case(), não estão disponíveis.

Exemplo

//button[normalize-space()='Sign in']
//input[@name='email']
//label[text()='Password']/following-sibling::input
//tr[td[normalize-space()='Order 1042']]//button[@aria-label='Cancel']
//a[contains(@href, '/invoices/')]

A quarta linha mostra por que as pessoas recorrem ao XPath: encontrar a linha da tabela que contém uma determinada célula e, depois, o botão dentro dessa linha.

WebElement cancel = driver.findElement(
    By.xpath("//tr[td[normalize-space()='Order 1042']]//button[@aria-label='Cancel']"));

Absoluto versus relativo

Um XPath absoluto começa na raiz (/html/body/div[2]/form/button) e quebra assim que qualquer wrapper muda. Um XPath relativo começa com // e se ancora em algo significativo. Copiar o “full XPath” do DevTools te dá a forma absoluta, que quase nunca é o que você quer em um teste.

Erros comuns

  • Caminhos baseados em índice, como (//div)[7]. Eles codificam o layout, e não o significado.
  • text() em elementos com markup aninhado. //button[text()='Save'] falha se o rótulo estiver dentro de um <span> filho. normalize-space() (ou .) usa o valor completo da string.
  • Buscar uma classe com @class='btn'. Isso só funciona quando btn é o atributo inteiro. Use contains(concat(' ', normalize-space(@class), ' '), ' btn '), ou mude para o CSS .btn.
  • Usar XPath por hábito. No Playwright, getByRole e getByText cobrem a maioria dos casos baseados em texto e ficam mais legíveis.

Digite para buscar em todo o SDETRole.

Busca de texto completo com Pagefind · roda no seu navegador Abrir página de busca →