C'è un modo per ottenere XPath in Google Chrome?


346

Ho una pagina web che voglio usare con YQL. Ma ho bisogno dell'XPath di un oggetto specifico. Posso vederlo nell'area degli strumenti di debug per Google Chrome ma non vedo un modo per copiare quell'XPath.

C'è un modo per copiare un XPath completo?


2
Se desideri installare Firefox oltre a Chrome, puoi utilizzare l' estensione xpather .
Adrian Grigore,

4
Se è disposto a installare Firefox, è già integrato in Firebug.
Verhogen,

2
@verhogen: non ne ero a conoscenza, anche se sto usando Firebug quasi quotidianamente. Se qualcun altro è interessato a maggiori informazioni, eccolo qui: blog.browsermob.com/2009/04/…
Adrian Grigore,

Sto anche votando questo .... l'helper Xpath in Google Chrome non funziona bene, sia quando si preme il tasto di scelta rapida [Ctrl + Maiusc + X] o si fa clic sul pulsante nero "X Path" (tramite il pulsante chiave inglese) nella Console JS quando ci sono errori JS nella pagina. E non ho trovato altri buoni componenti aggiuntivi per Chrome là fuori. Non scaricare il componente aggiuntivo "XPath Checker" per Mozilla. Ho riscontrato problemi anche con quel componente aggiuntivo. Assicurati di ottenere "XPather" e scaricarlo mentre Firefox è aperto (non un altro browser). Per utilizzare l'elemento "XPather", fai clic con il pulsante destro del mouse e scegli "Mostra in XPather"
MacGyver

Ora Chrome ha anche un'estensione "XPather". Lo sento molto bene. Alt-'x 'per attivare la finestra. Puoi inserire xpath e vedere i risultati corrispondenti. La visualizzazione del risultato abbinato è abbastanza accurata.
gm2008,

Risposte:


555

È possibile utilizzare $xnella console javascript di Chrome. Non sono necessarie estensioni.

ex: $x("//img")

Anche la casella di ricerca nella finestra di ispezione web accetterà xpath


2
Bello - anche se non sono sicuro che questo risponda alla domanda originale. Come lo hai scoperto? Mi chiedo se ci sono altre funzioni simili disponibili nella console.
huyz,

4
Suppongo che Chrome abbia copiato la maggior parte dei comandi della riga di comando di Firebug: getfirebug.com/wiki/index.php/Command_Line_API
huyz,

99
Stava chiedendo "come ottenere una stringa xpath per un elemento?", Piuttosto che "come seleziono per xpath?" no?
Max Williams

3
Interessante come Ctrl+Spacenon rivela $x. Se digiti $x, puoi vedere come è stato realizzato, quindi l'OP dovrebbe essere in grado di determinare come ottenere ciò che desidera. Per esempio; document.evaluate('//h1', document, null, XPathResult.STRING_TYPE, null).stringValue
Alasdair,

5
@huyz - ci sono funzioni simili disponibili. Vedi developers.google.com/chrome-developer-tools/docs/console . $ 0 è particolarmente utile: l'ultimo elemento selezionato nello strumento DOM. $ ($ 0) lo rende un oggetto jQuery (se jQuery è disponibile). Inoltre, l'articolo non menziona la copia ($ 0), che viene copiata negli Appunti. (Per inciso, ho appena scoperto $ x e ho trovato questo thread, perché stavo cercando di usare quella variabile per qualcos'altro nella console.)
Nathan Long

244

Fare clic destro sul nodo => "Copia XPath"


19
Questo è il modo più fragile per ottenere un xpath, è molto probabile che si rompa quando i contenuti cambiano
Juan Mendes,

8
@JuanMendes qual è l'alternativa?
Nate,

9
@Nate Non esiste alternativa facile se si desidera che XPath funzioni ancora quando il documento cambia. Devi solo pensarci e cercare di non aggiungere informazioni superflue al tuo XPath. Una regola empirica è che più è lungo il tuo XPath, meno è probabile che funzioni in altri contesti.
Juan Mendes,

Questo non ti dà un vero XPath per l'elemento univoco nella pagina. Sarebbe abbastanza difficile.
CJ7,

1
Nella nuova versione di Google Chrome, è necessario fare clic con il pulsante destro del mouse sul nodo e selezionare Copia elemento XPath che è stato spostato sull'opzione Copia.
Omid Nasri,

92

Tutte le risposte sopra sono corrette qui è un altro modo anche con screenshot.

Da Chrome:

  1. Fai clic con il pulsante destro del mouse su "ispeziona" sull'elemento che stai cercando di trovare xpath
  2. Fare clic con il tasto destro del mouse sull'area evidenziata sulla console.
  3. Vai a Copia xpath

inserisci qui la descrizione dell'immagine



13

Ora non è necessaria alcuna estensione in Chrome. Fare clic con il tasto destro su qualsiasi elemento per cui si desidera xpath e fare clic su "Ispeziona elemento", quindi di nuovo all'interno di Inspector, fare clic con il tasto destro del mouse sull'elemento e fare clic su "Copia Xpath".


11
Questo metodo è già stato citato in una risposta precedente, pubblicata l'anno scorso: stackoverflow.com/a/11087358/938089
Rob W

12

Google Chrome fornisce uno strumento di debug integrato chiamato " Chrome DevTools " pronto all'uso , che include una pratica funzionalità che può valutare o validare i selettori XPath / CSS senza estensioni di terze parti.

Questo può essere fatto con due approcci:

Utilizzare la funzione di ricerca all'interno del pannello Elementi per valutare i selettori XPath / CSS ed evidenziare i nodi corrispondenti nel DOM. Esegui i token $ x ("some_xpath") o $$ ("css-selettori") nel pannello Console, che verranno entrambi valutati e validati.

Dal pannello Elementi

  1. Premi F12 per aprire Chrome DevTools.

  2. Il pannello Elementi dovrebbe essere aperto per impostazione predefinita.

  3. Premi Ctrl + F per abilitare la ricerca DOM nel pannello.

  4. Digitare i selettori XPath o CSS per valutare.

  5. Se ci sono elementi corrispondenti, saranno evidenziati in DOM. Tuttavia, se nel DOM sono presenti stringhe corrispondenti, verranno considerate valide anche i risultati. Ad esempio, l'intestazione del selettore CSS deve corrispondere a tutto (CSS incorporato, script ecc.) Che contiene l'intestazione della parola, anziché corrispondere solo agli elementi.

inserisci qui la descrizione dell'immagine

Dal pannello della console

  1. Premi F12 per aprire Chrome DevTools.

  2. Passa al pannello Console.

  3. Digitare XPath come $x(".//header")valutare e validare.

  4. Digitare selettori CSS come $$("header")valutare e validare.

  5. Controlla i risultati restituiti dall'esecuzione della console.

Se gli elementi vengono abbinati, verranno restituiti in un elenco. Altrimenti viene visualizzato un elenco vuoto [].

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

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

Se il selettore XPath o CSS non è valido, verrà mostrata un'eccezione in rosso. Per esempio:

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

10

Lascia che ti dica una semplice formula per trovare xpath di qualsiasi elemento:

1- Apri il sito nel browser

2- Seleziona l'elemento e fai clic destro su di esso

3- Fare clic sull'opzione Controlla elemento

4- Fare clic con il tasto destro del mouse sull'html selezionato

5- scegli l'opzione per copiare xpath Usalo dove mai ne hai bisogno

Questo collegamento video sarà utile per te. http://screencast.com/t/afXsaQXru

Nota: per le opzioni avanzate di xpath devi conoscere regex o pattern del tuo html.


3
$x('//*[@id="answer-33492958"]/table/tbody/tr[1]/td[1]/div/a[1]')[0].click();
Ho

8

xpathOnClick ha quello che stai cercando: https://chrome.google.com/extensions/detail/ikbfbhbdjpjnalaooidkdbgjknhghhbo

Leggi i commenti però, in realtà bastano tre clic per ottenere lo xpath.


Non sembra funzionare su Ubuntu 10.04 con Chrome 12.0.742.124, si installa ma quando si fa clic sull'icona xpath, quindi fare clic sulla pagina (prima volta per chiudere il popup xpath), quindi fare clic su un elemento della pagina (per mostrare xpath nella console js ) .... non viene visualizzato nulla nella console. testato sul sito del plugin
xiatica il

8

A partire dall'ultimo aggiornamento per Chrome, ora puoi fare clic su qualsiasi elemento nella finestra di ispezione degli elementi e copiare XPath negli Appunti.


5

Per Chrome, ad esempio:

  1. Fai clic con il pulsante destro del mouse su "ispeziona" sull'elemento che stai cercando di trovare XPath.
  2. Fare clic con il tasto destro del mouse sull'area evidenziata nel DOM HTML.
  3. Vai a Copia> seleziona 'Copia XPath'.
  4. Dopo il passaggio precedente, otterrai l'XPath assoluto dell'elemento da DOM.
  5. Puoi apportare modifiche per renderlo XPath relativo (perché se il DOM cambia, comunque XPath sarebbe in grado di trovare l'elemento).

un. Per fare ciò, aprendo il pannello "Elementi" del browser, premere CTRL + F, incollare XPath.

b. Apporta le modifiche come descritto nell'esempio seguente.

Absolute xpath = // * [@ id = "app"] / div [1] / header / nav / div [2] / ul / li [2] / div / button

Tasto xpath = // div // nav / div [2] / ul / li [2] / div /

Quando si apportano modifiche:

  1. assicurarsi che XPath sia unico nel DOM.
  2. tuttavia l'elemento web è selezionato sul DOM e sulla pagina Web.

3

Basta fare clic con il pulsante destro del mouse sull'elemento per cui si desidera xpath e vedrai una voce di menu per copiarlo. Questo potrebbe non esistere quando l'OP ha pubblicato il suo posto, ma ora è certamente lì.


2

In Firebug in Firefox, puoi fare clic con il tasto destro su un elemento dopo averlo ispezionato e scegliere Copia XPath. Non sono riuscito a far funzionare ChromYQLip senza problemi.


1

Puoi provare a utilizzare Chrome Web Extension TruePath che genera dinamicamente il relativo XPath facendo clic con il tasto destro sulla pagina Web e visualizza tutti gli XPath come voci di menu.


0

Leggermente OT, ma forse utile: su Mac Chrome, sebbene non sia possibile copiare xpath fuori dalla casella di ricerca nel pannello Strumenti di sviluppo (invece, copia afferra il nodo come HTML), puoi trascinare e rilasciare il testo in un editor esterno.



0

premere Cntl + Shift + C
selezionare l'elemento che si desidera ottenere XPathfacendo clic su di esso
right clicksulla parte evidenziata nella console
copy->copy XPath

inserisci qui la descrizione dell'immagine


-1

Usa questa estensione, genera xpaths basati su id o class, che è probabilmente quello che vuoi usare.

Fai clic sull'icona del browser, il pannello viene visualizzato nell'angolo destro della pagina, quindi fai clic su Avvia ispezione, quindi fai clic su qualsiasi elemento per ottenere il tuo xpath.

Generatore XPath


@robbyoconnor se hai fatto qualche test blackbox o ricerca per indicizzazione, sapresti che xpath generato dal browser non è così stabile.
ospider
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.