Gibt es eine Möglichkeit, den XPath in Google Chrome zu erhalten?


346

Ich habe eine Webseite, die ich mit YQL verwenden möchte. Aber ich brauche den XPath eines bestimmten Gegenstands. Ich kann es im Bereich der Debug-Tools für Google Chrome sehen, aber ich sehe keine Möglichkeit, diesen XPath zu kopieren.

Gibt es eine Möglichkeit, einen vollständigen XPath zu kopieren?


2
Wenn Sie bereit sind, Firefox zusätzlich zu Chrome zu installieren, können Sie die xpather- Erweiterung verwenden.
Adrian Grigore

4
Wenn er bereit ist, Firefox zu installieren, ist es bereits in Firebug integriert.
Verhogen

2
@verhogen: Ich war mir dessen nicht bewusst, obwohl ich Firebug fast täglich benutze. Falls jemand anderes an weiteren Informationen interessiert ist, hier ist es: blog.browsermob.com/2009/04/…
Adrian Grigore

Ich stimme dem auch zu ... der Xpath-Helfer in Google Chrome funktioniert nicht gut, sowohl wenn Sie die Tastenkombination [Strg + Umschalt + X] drücken oder auf die schwarze Schaltfläche "X-Pfad" (mit dem Schraubenschlüssel) in der klicken JS-Konsole, wenn die Seite JS-Fehler enthält. Und ich konnte keine anderen guten Add-Ons für Chrome finden. Laden Sie das Add-On "XPath Checker" für Mozilla nicht herunter. Ich habe auch Probleme mit diesem Add-On gefunden. Stellen Sie sicher, dass Sie den "XPather" erhalten und herunterladen, während Sie Firefox geöffnet haben (kein anderer Browser). Um das "XPather" Rechtsklick-Element zu verwenden und wählen Sie "In XPather anzeigen"
MacGyver

Jetzt hat Chrome auch eine "XPather" -Erweiterung. Ich finde es sehr gut. Alt-'x ', um das Fenster zu aktivieren. Sie können den xpath eingeben und die übereinstimmenden Ergebnisse anzeigen. Die Anzeige des übereinstimmenden Ergebnisses ist recht ordentlich.
gm2008

Antworten:


555

Sie können $xin der Chrome-Javascript-Konsole verwenden. Keine Erweiterungen erforderlich.

Ex: $x("//img")

Auch das Suchfeld im Webinspektor akzeptiert xpath


2
Schön - obwohl ich nicht sicher bin, ob dies die ursprüngliche Frage beantwortet. Wie haben Sie davon erfahren? Ich frage mich, ob andere ähnliche Funktionen in der Konsole verfügbar sind.
Huyz

4
Ich denke, Chrome hat die meisten Firebug-Befehlszeilenbefehle kopiert: getfirebug.com/wiki/index.php/Command_Line_API
huyz

99
Er fragte "Wie erhalte ich eine Xpath-Zeichenfolge für ein Element?" Und nicht "Wie wähle ich nach Xpath aus?" war er nicht?
Max Williams

3
Interessant wie Ctrl+Spacenicht verrät $x. Wenn Sie nur tippen $x, können Sie sehen, wie es erreicht wird. Daher sollte das OP bestimmen können, wie das erreicht werden soll, was es will. Zum Beispiel; document.evaluate('//h1', document, null, XPathResult.STRING_TYPE, null).stringValue
Alasdair

5
@huyz - es stehen ähnliche Funktionen zur Verfügung. Siehe developer.google.com/chrome-developer-tools/docs/console . $ 0 ist besonders nützlich: das letzte Element, das Sie im DOM-Tool ausgewählt haben. $ ($ 0) macht es zu einem jQuery-Objekt (wenn jQuery verfügbar ist). Außerdem wird in dem Artikel keine Kopie ($ 0) erwähnt, die in die Zwischenablage kopiert wird. (Übrigens habe ich gerade $ x entdeckt und diesen Thread gefunden, weil ich versucht habe, diese Variable für etwas anderes in der Konsole zu verwenden.)
Nathan Long

243

Klicken Sie mit der rechten Maustaste auf den Knoten => "XPath kopieren"


19
Dies ist der spröde Weg, um einen xpath zu erhalten. Es ist sehr wahrscheinlich, dass er bricht, wenn sich der Inhalt ändert
Juan Mendes

8
@ JuanMendes was ist die Alternative?
Nate

9
@Nate Es gibt keine einfache Alternative, wenn Ihr XPath weiterhin funktionieren soll, wenn sich das Dokument ändert. Sie müssen nur darüber nachdenken und versuchen, Ihrem XPath keine überflüssigen Informationen hinzuzufügen. Als Faustregel gilt: Je länger Ihr XPath ist, desto weniger wahrscheinlich ist es, dass er in anderen Kontexten funktioniert.
Juan Mendes

Dies gibt Ihnen keinen tatsächlichen XPath für das eindeutige Element auf der Seite. Das wäre ziemlich schwierig.
CJ7

1
In der neuen Version von Google Chrome müssen Sie mit der rechten Maustaste auf den Knoten klicken und XPath-Element kopieren auswählen, das in die Option Kopieren verschoben wurde.
Omid Nasri

92

Alle obigen Antworten sind hier richtig. Dies ist auch ein anderer Weg mit Screenshot.

Von Chrome:

  1. Klicken Sie mit der rechten Maustaste auf "Überprüfen" des Elements, das Sie suchen, um den xpath zu finden
  2. Klicken Sie mit der rechten Maustaste auf den markierten Bereich in der Konsole.
  3. Gehen Sie zu xpath kopieren

Geben Sie hier die Bildbeschreibung ein


24

Die XPath Helper-Erweiterung bietet genau das, was Sie benötigen: https://chrome.google.com/webstore/detail/hgimnogjllphhhkhlmebbmlgjoejdpjl


Kennt jemand die Tastaturbefehle dafür auf Ubuntu? crtl-shift-x und command-shift-x scheinen nichts zu tun
xiatica

1
@xiatica, hast du es in einem neuen / aktualisierten Tab versucht? Beachten Sie, dass die Erweiterung in Registerkarten, die vor der Installation geöffnet waren, nicht funktioniert. Solche Registerkarten müssen aktualisiert werden.
Asadovsky

13

In Chrom ist jetzt keine Erweiterung erforderlich. Klicken Sie mit der rechten Maustaste auf ein Element, für das Sie xpath möchten, und klicken Sie auf "Element überprüfen". Klicken Sie dann erneut im Inspektor mit der rechten Maustaste auf das Element und klicken Sie auf "Xpath kopieren".


11
Diese Methode wurde bereits in einer früheren Antwort erwähnt, die letztes Jahr veröffentlicht wurde: stackoverflow.com/a/11087358/938089
Rob W

12

Google Chrome bietet ein integriertes Debugging-Tool namens " Chrome DevTools ", das eine praktische Funktion enthält, mit der XPath / CSS-Selektoren ohne Erweiterungen von Drittanbietern bewertet oder validiert werden können.

Dies kann auf zwei Arten erfolgen:

Verwenden Sie die Suchfunktion im Elementbedienfeld, um XPath / CSS-Selektoren auszuwerten und übereinstimmende Knoten im DOM hervorzuheben. Führen Sie die Token $ x ("some_xpath") oder $$ ("css-selectors") im Konsolenfenster aus, die sowohl ausgewertet als auch validiert werden.

Im Elementfenster

  1. Drücken Sie F12, um Chrome DevTools zu öffnen.

  2. Das Elementfenster sollte standardmäßig geöffnet sein.

  3. Drücken Sie Strg + F, um die DOM-Suche im Bedienfeld zu aktivieren.

  4. Geben Sie zur Auswertung XPath- oder CSS-Selektoren ein.

  5. Wenn übereinstimmende Elemente vorhanden sind, werden diese im DOM hervorgehoben. Wenn das DOM jedoch übereinstimmende Zeichenfolgen enthält, werden diese ebenfalls als gültige Ergebnisse betrachtet. Beispielsweise sollte der CSS-Auswahlkopf mit allem übereinstimmen (Inline-CSS, Skripte usw.), das den Wortkopf enthält, anstatt nur mit Elementen übereinzustimmen.

Geben Sie hier die Bildbeschreibung ein

Über das Konsolenfenster

  1. Drücken Sie F12, um Chrome DevTools zu öffnen.

  2. Wechseln Sie zum Konsolenfenster.

  3. Geben Sie XPath ein $x(".//header"), um es zu bewerten und zu validieren.

  4. Geben Sie CSS-Selektoren ein $$("header"), die bewertet und validiert werden sollen.

  5. Überprüfen Sie die Ergebnisse der Konsolenausführung.

Wenn Elemente übereinstimmen, werden sie in einer Liste zurückgegeben. Andernfalls wird eine leere Liste [] angezeigt.

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

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

Wenn der XPath- oder CSS-Selektor ungültig ist, wird eine Ausnahme in roter Schrift angezeigt. Zum Beispiel:

$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

Lassen Sie sich eine einfache Formel geben, um xpath eines Elements zu finden:

1- Öffnen Sie die Site im Browser

2- Element auswählen und mit der rechten Maustaste darauf klicken

3- Klicken Sie auf die Option Element überprüfen

4- Klicken Sie mit der rechten Maustaste auf das ausgewählte HTML

5- Wählen Sie die Option zum Kopieren von xpath. Verwenden Sie sie, wo immer Sie sie benötigen

Dieser Videolink ist hilfreich für Sie. http://screencast.com/t/afXsaQXru

Hinweis: Für erweiterte Optionen von xpath müssen Sie den regulären Ausdruck oder das Muster Ihres HTML-Codes kennen.


3
Verwendete die Chrome-Konsole, um dies zu testen und tat dies, um Folgendes zu verbessern: $x('//*[@id="answer-33492958"]/table/tbody/tr[1]/td[1]/div/a[1]')[0].click();
Cagatay Ulubay

8

xpathOnClick hat das, wonach Sie suchen: https://chrome.google.com/extensions/detail/ikbfbhbdjpjnalaooidkdbgjknhghhbo

Lesen Sie die Kommentare, es dauert tatsächlich drei Klicks, um den xpath zu erhalten.


Scheint unter Ubuntu 10.04 mit Chrome 12.0.742.124 nicht zu funktionieren, wird installiert, aber wenn Sie auf das xpath-Symbol klicken, klicken Sie auf die Seite (zum ersten Mal, um das xpath-Popup zu schließen) und dann auf ein Seitenelement (um xpath in der js-Konsole anzuzeigen) ) .... in der Konsole wird nichts angezeigt. getestet auf der Plugin-Site
Xiatica

8

Ab dem neuesten Update für Chrome können Sie jetzt auf jedes Element im Elementinspektor klicken und den XPath in die Zwischenablage kopieren.


5

Für Chrome zum Beispiel:

  1. Klicken Sie mit der rechten Maustaste auf "Überprüfen" des Elements, das Sie suchen, um den XPath zu finden.
  2. Klicken Sie mit der rechten Maustaste auf den markierten Bereich im HTML-DOM.
  3. Gehen Sie zu Kopieren> wählen Sie 'XPath kopieren'.
  4. Nach dem obigen Schritt erhalten Sie den absoluten XPath des Elements von DOM.
  5. Sie können Änderungen vornehmen, um es zu einem relativen XPath zu machen (denn wenn sich das DOM ändert, kann Ihr XPath das Element trotzdem finden).

ein. Drücken Sie dazu durch Öffnen des Bedienfelds 'Elemente' des Browsers STRG + F und fügen Sie den XPath ein.

b. Nehmen Sie die Änderungen wie im folgenden Beispiel beschrieben vor.

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

Verwandte xpath = // div // nav / div [2] / ul / li [2] / div / button

Wenn Sie Änderungen vornehmen:

  1. Stellen Sie sicher, dass der XPath innerhalb des DOM eindeutig ist.
  2. Das Webelement wird weiterhin im DOM und auf der Webseite ausgewählt.

3

Klicken Sie einfach mit der rechten Maustaste auf das Element, für das Sie den xpath möchten, und Sie sehen einen Menüpunkt, um ihn zu kopieren. Dies mag nicht existiert haben, als das OP seinen Posten gemacht hat, aber es ist jetzt sicher da.


2

In Firebug in Firefox können Sie nach der Überprüfung mit der rechten Maustaste auf ein Element klicken und XPath kopieren auswählen. Ich konnte ChromYQLip nicht zum reibungslosen Funktionieren bringen.



0

Etwas OT, aber vielleicht nützlich: Unter Mac Chrome können Sie den Text in einen externen Editor ziehen und dort ablegen, obwohl Sie den xpath nicht aus dem Suchfeld im Dev-Tools-Bedienfeld kopieren können (stattdessen wird der Knoten als HTML kopiert).


0

Ich habe fast alle verfügbaren Erweiterungen ausprobiert und fand, dass die folgenden eine der besten ist.

ChroPath-Erweiterungslink

Genau wie FirePath erhalten Sie mit dieser Erweiterung direkt den Xpath, wenn Sie auf Inspect klicken.

Geben Sie hier die Bildbeschreibung ein


0

Drücken Sie, Cntl + Shift + C
um das Element auszuwählen, das Sie erhalten möchten, XPathindem Sie
right clickauf das markierte Teil in der Konsole klicken
copy->copy XPath

Geben Sie hier die Bildbeschreibung ein


-1

Wenn Sie diese Erweiterung verwenden, werden xpaths basierend auf der ID oder der Klasse generiert. Dies ist wahrscheinlich das, was Sie verwenden möchten.

Klicken Sie auf das Browsersymbol. Das Bedienfeld wird in der rechten Ecke der Seite angezeigt. Klicken Sie dann auf Inspektion starten und dann auf ein Element, um Ihren xpath zu erhalten.

XPath Generator


Wird nicht benötigt, da es nativ verfügbar ist. Es ist auch nicht erforderlich, eine ganz neue Anwendung für etwas herunterzuladen, das Chrome / Firefox nativ ausführen kann.
Robbyoconnor

@robbyoconnor Wenn Sie einige Blackbox-Tests oder Crawls durchgeführt haben, wissen Sie, dass der vom Browser generierte xpath nicht so stabil ist.
ospider
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.