Existe uma maneira de obter o XPath no Google Chrome?

346

Eu tenho uma página da web que quero usar com o YQL. Mas preciso do XPath de um item específico. Eu posso vê-lo na área de ferramentas de depuração do Google Chrome, mas não vejo uma maneira de copiar esse XPath.

Existe uma maneira de copiar um XPath completo?

GeoffreyF67
fonte
2
Se você deseja instalar o Firefox além do Chrome, use a extensão xpather .
Adrian Grigore
4
Se ele estiver disposto a instalar o Firefox, ele já está incorporado no Firebug.
Verhogen
2
@verhogen: Eu não estava ciente disso, mesmo usando o Firebug quase diariamente. Caso outra pessoa esteja interessada em mais informações, aqui está: blog.browsermob.com/2009/04/…
Adrian Grigore
Também estou votando positivo .... o Xpath Helper no Google Chrome não funciona bem, ao pressionar a tecla de atalho [Ctrl + Shift + X] ou ao clicar no botão preto "X Path" (no botão da chave inglesa) no Console JS quando houver erros de JS na página. E não consegui encontrar outros bons complementos para o Chrome por aí. Não faça o download do complemento "XPath Checker" para Mozilla. Também encontrei problemas com esse complemento. Certifique-se de obter o "XPather" e baixá-lo enquanto o Firefox estiver aberto (não em outro navegador). Para usar o "XPather" elemento botão direito e escolha "Show em XPather"
MacGyver
Agora, o Chrome também possui uma extensão "XPather". Eu sinto que é muito bom. Alt-'x 'para ativar a janela. Você pode inserir o xpath e ver os resultados correspondentes. A exibição do resultado correspondente é bastante clara.
precisa saber é o seguinte

Respostas:

555

Você pode usar $xno console javascript do Chrome. Não são necessárias extensões.

ex: $x("//img")

Além disso, a caixa de pesquisa no inspetor da web aceita o xpath

Matt Polito
fonte
2
Bom - embora não tenha certeza de que isso responda à pergunta original. Como você ficou sabendo disso? Gostaria de saber se existem outras funções semelhantes disponíveis no console.
huyz 3/09/11
4
Eu acho que Chrome copiado a maioria dos comandos de linha de comando do Firebug: getfirebug.com/wiki/index.php/Command_Line_API
huyz
99
Ele estava perguntando "como obter uma string xpath para um elemento?", Em vez de "como faço para selecionar pelo xpath?" não foi?
Max Williams
3
Interessante como Ctrl+Spacenão revela $x. Se você digitar, $xpoderá ver como isso é alcançado; portanto, o OP deve ser capaz de determinar como alcançar o que deseja. Por exemplo; document.evaluate('//h1', document, null, XPathResult.STRING_TYPE, null).stringValue
Alasdair
5
@ Huyz - existem funções semelhantes disponíveis. Consulte developers.google.com/chrome-developer-tools/docs/console . $ 0 é particularmente útil: o último elemento que você selecionou na ferramenta DOM. $ ($ 0) o torna um objeto jQuery (se jQuery estiver disponível). Além disso, o artigo não menciona cópia (US $ 0), que é copiada para a área de transferência. (Aliás, eu só descobri $ x, e encontrou esta discussão, porque eu estava tentando usar essa variável para algo mais no console.)
Nathan Long
244

Clique com o botão direito do mouse no nó => "Copy XPath"

zavidovych
fonte
19
Esta é a maneira mais frágil para obter um XPath, é muito provável que quebrar como alterações de conteúdo
Juan Mendes
8
@JuanMendes, qual é a alternativa?
Nate
9
@Nate Não há alternativa fácil se você deseja que o XPath ainda funcione à medida que o documento muda. Você apenas precisa pensar sobre isso e tentar não adicionar informações supérfluas ao seu XPath. Uma regra prática é que, quanto mais longo o seu XPath, menor a probabilidade de ele funcionar em outros contextos.
Juan Mendes
Isso não fornece um XPath real para o elemento exclusivo na página. Isso seria bem difícil.
CJ7
11
Na nova versão do Google chrome, você deve clicar com o botão direito do mouse no nó e selecionar Copiar item XPath que foi movido para a opção Copiar.
Omid Nasri #
92

Todas as respostas acima estão corretas aqui também é uma outra maneira com a captura de tela.

No Chrome:

  1. Clique com o botão direito do mouse em "inspecionar" no item que você está tentando encontrar no xpath
  2. Clique com o botão direito do mouse na área destacada no console.
  3. Vá para Copiar xpath

insira a descrição da imagem aqui

grepit
fonte
24

A extensão XPath Helper faz o que você precisa: https://chrome.google.com/webstore/detail/hgimnogjllphhhkhlmebbmlgjoejdpjl

asadovsky
fonte
Alguém sabe os comandos do teclado para isso no ubuntu? crtl-shift-x e-shift comando-x não parecem fazer qualquer coisa
xiatica
11
@xiatica, você tentou em uma guia nova / atualizada? Observe que a extensão não funcionará em guias que foram abertas antes da instalação; essas guias devem ser atualizadas.
Asadovsky
13

Nenhuma extensão necessária no chrome agora. Clique com o botão direito do mouse em qualquer elemento para o qual você deseja o xpath e clique em "Inspecionar Elemento" e, novamente, dentro do Inspetor, clique com o botão direito do mouse no elemento e clique em "Copiar Xpath".

mergulho profundo
fonte
11
Este método já foi mencionado em uma resposta anterior, publicada no ano passado: stackoverflow.com/a/11087358/938089
Rob W
12

O Google Chrome fornece uma ferramenta de depuração interna chamada " Chrome DevTools " pronta para uso, que inclui um recurso útil que pode avaliar ou validar seletores XPath / CSS sem extensões de terceiros.

Isso pode ser feito por duas abordagens:

Use a função de pesquisa dentro do painel Elementos para avaliar os seletores XPath / CSS e destacar nós correspondentes no DOM. Execute os tokens $ x ("some_xpath") ou $$ ("css-selectors") no painel Console, que avaliarão e validarão.

No painel Elementos

  1. Pressione F12 para abrir o Chrome DevTools.

  2. O painel Elementos deve ser aberto por padrão.

  3. Pressione Ctrl + F para ativar a pesquisa do DOM no painel.

  4. Digite XPath ou seletores CSS para avaliar.

  5. Se houver elementos correspondentes, eles serão destacados no DOM. No entanto, se houver seqüências correspondentes no DOM, elas também serão consideradas como resultados válidos. Por exemplo, o cabeçalho do seletor de CSS deve corresponder a tudo (CSS embutido, scripts etc.) que contém o cabeçalho da palavra, em vez de corresponder apenas aos elementos.

insira a descrição da imagem aqui

No painel do console

  1. Pressione F12 para abrir o Chrome DevTools.

  2. Alterne para o painel Console.

  3. Digite XPath como $x(".//header")para avaliar e validar.

  4. Digite seletores CSS como $$("header")para avaliar e validar.

  5. Verifique os resultados retornados da execução do console.

Se os elementos corresponderem, eles serão retornados em uma lista. Caso contrário, uma lista vazia [] é exibida.

$x(".//article")
[<article class="unit-article layout-post">…</article>]

$x(".//not-a-tag")
[ ]

Se o seletor XPath ou CSS for inválido, uma exceção será mostrada em texto em vermelho. Por exemplo:

$x(".//header/")
SyntaxError: Failed to execute 'evaluate' on 'Document': The string './/header/' is not a valid XPath expression.

$$("header[id=]")
SyntaxError: Failed to execute 'querySelectorAll' on 'Document': 'header[id=]' is not a valid selector.
Shubham Jain
fonte
10

Vamos lhe dizer uma fórmula simples para encontrar xpath de qualquer elemento:

1- Abrir site no navegador

2- Selecione o elemento e clique com o botão direito nele

3- Clique na opção inspecionar elemento

4- Clique com o botão direito do mouse no html selecionado

5- escolha a opção para copiar o xpath Use-o sempre que precisar

Este link de vídeo será útil para você. http://screencast.com/t/afXsaQXru

Nota: Para opções avançadas do xpath, você deve conhecer o regex ou o padrão do seu html.

Abdul Majeed
fonte
3
Utilizou o console do Chrome para testar isso e fez isso para votar: $x('//*[@id="answer-33492958"]/table/tbody/tr[1]/td[1]/div/a[1]')[0].click();
Cagatay Ulubay 16/16/16
8

xpathOnClick tem o que você está procurando: https://chrome.google.com/extensions/detail/ikbfbhbdjpjnalaooidkdbgjknhghhbo

Leia os comentários, porém, são necessários três cliques para obter o xpath.

Burt
fonte
Não parece funcionar no ubuntu 10.04 com chrome 12.0.742.124, instala, mas quando clica no ícone xpath, clica na página (primeira vez para descartar o pop-up do xpath) e depois clica no elemento da página (para mostrar o xpath no console js ) .... nada aparece no console. testado no site do plug-in
xiatica
8

A partir da atualização mais recente do chrome, agora você pode clicar em qualquer elemento no inspetor de elementos e copiar o XPath para a área de transferência.

Complicado
fonte
5

Para o Chrome, por exemplo:

  1. Clique com o botão direito do mouse em "inspecionar" no item que você está tentando encontrar no XPath.
  2. Clique com o botão direito do mouse na área destacada no DOM HTML.
  3. Vá para Copiar> selecione 'Copiar XPath'.
  4. Após a etapa acima, você obterá o XPath absoluto do elemento do DOM.
  5. Você pode fazer alterações para torná-lo XPath relativo (porque, se o DOM for alterado, o XPath ainda poderá encontrar o elemento).

uma. Para fazer isso, abrindo o painel 'Elementos' do navegador, pressione CTRL + F e cole o XPath.

b. Faça as alterações conforme descrito no exemplo a seguir.

Xpath absoluto = // * [@ id = "app"] / div [1] / cabeçalho / nav / div [2] / ul / li [2] / div / botão

Xpath relacionado = // div // nav / div [2] / ul / li [2] / div / button

Quando você faz alterações:

  1. verifique se o XPath é exclusivo no DOM.
  2. o elemento da web ainda está selecionado no DOM e na página da web.
Hossain Mahmood Tuhin
fonte
3

Basta clicar com o botão direito do mouse no elemento para o qual você deseja o xpath e você verá um item de menu para copiá-lo. Isso pode não ter existido quando o OP fez seu cargo, mas certamente está lá agora.

RAAAAAAAANDY
fonte
2

No Firebug no Firefox, você pode clicar com o botão direito do mouse em um elemento após inspecioná-lo e escolher Copiar XPath. Não consegui que o ChromYQLip funcionasse sem problemas.

Ivan
fonte
1

Você pode tentar usar o TruePath da Extensão da Web do Chrome, que gera dinamicamente o XPath relativo com o botão direito do mouse na página da web e exibe todo o XPath como itens de menu.

dasunse
fonte
0

Ligeiramente OT, mas talvez útil: no Mac Chrome, embora você não possa copiar o xpath da caixa de pesquisa no painel Ferramentas do desenvolvedor (em vez disso, a cópia agarra o nó como HTML), você pode arrastar e soltar o texto em um editor externo.

Ben Weiner
fonte
0

Eu tentei quase todas as extensões disponíveis e achei o abaixo um dos melhores.

Link de extensão do ChroPath

Assim como o FirePath, esta extensão fornece diretamente o Xpath quando você clica em Inspecionar.

insira a descrição da imagem aqui

Harish Kannan
fonte
0

pressione Cntl + Shift + C
selecione o elemento que deseja obter XPathclicando na
right clickparte destacada no console
copy->copy XPath

insira a descrição da imagem aqui

Hossein Hayati
fonte
-1

Use esta extensão, ela gera xpaths com base no ID ou na classe, que provavelmente é o que você deseja usar.

Clique no ícone do navegador, o painel é mostrado no canto direito da página, clique em iniciar inspeção e clique em qualquer elemento para obter seu xpath.

XPath Generator

ospider
fonte
Não é necessário, pois está disponível nativamente. Também não há necessidade de baixar um aplicativo totalmente novo para algo que o Chrome / Firefox possa fazer de forma nativa.
22419 robbyoconnor
@robbyoconnor Se você fez algum teste ou rastreamento de caixa preta, saberia que o xpath gerado pelo navegador não é tão estável.
Ospider