Hilfreiche Ratschläge

Beispiele für xpath-HTML-Anforderungen

Pin
Send
Share
Send
Send


Menschen, die sich bei der Automatisierung mit Selen die Hände schmutzig gemacht haben, sind mit dem Schmerz vertraut, einen Test aufgrund eines falschen Element-Locators nicht zu bestehen und weil sie nicht wussten, wie man XPath- und CSS-Pfade richtig abruft. Firebug ist die Lösung für diese Probleme, und es beschleunigt auch Ihren Roboter über die Automatisierung. Dieser Artikel beschreibt, wie Sie mithilfe von Firebug XPath- und CSS-Pfade für jedes Element auf einer Webseite abrufen können. XPath ist nur eine Kombination von HTML-Tags, die ein bestimmtes Element einer Webseite identifizieren.

Erstellen Sie eine Anfrage an Webseiten-Websites

Ich mache Sie auf ein kleines Labor aufmerksam, in dem ich die Erstellung von xpath-Anforderungen für eine Webseite demonstriere. Sie können meine Anfragen wiederholen und vor allem versuchen, Ihre zu erfüllen. Ich hoffe, dass dies den Artikel für Anfänger und Programmierer, die mit xpath in xml vertraut sind, gleichermaßen interessant macht.

Für das Labor benötigen wir:
- XHTML-Webseite,
- Mozilla Firefox-Browser mit Add-Ons,
- Feuerkäfer,
- firePath,
(Sie können jeden anderen Browser mit visueller xpath-Unterstützung verwenden)
- Nicht viel Zeit.

Als Webseite für das Experiment schlage ich die Hauptseite der Website des World Wide Web Consortium ('http://w3.org') vor. Diese Organisation entwickelt die xquery (xpath) -Sprachen, die xhtml-Spezifikation und viele andere Internetstandards.

Informationen zu Konsortialkonferenzen erhalten Sie mithilfe von xpath-Anforderungen im xhtml-Code auf der Hauptseite von w3.org.
Beginnen wir mit dem Schreiben von xpath-Anforderungen.

Erste xpath-Anfrage

Öffnen Sie die Registerkarte "Firepath" in FireBug, wählen Sie das zu analysierende Element mit der Auswahl aus und klicken Sie auf: Firepath hat eine xpath-Anforderung für das ausgewählte Element erstellt.

Wenn Sie den Header des ersten Ereignisses auswählen, sieht die Anfrage folgendermaßen aus:

Nach dem Löschen redundanter Indizes entspricht die Abfrage allen Elementen des Typs "Header".

Firepath hebt Elemente hervor, die mit der Abfrage übereinstimmen. Sie können in Echtzeit sehen, welche Knoten des Dokuments mit der Abfrage übereinstimmen.

Mach weiter. Wir erstellen Abfragen, um nach Konferenzorten und deren Sponsoren zu suchen, entweder mithilfe des Selektors oder durch Ändern der ersten Abfrage.

Informationsanfrage zu den Tagungsorten:
.//*[@] / ul / li / div / p

So erhalten wir die Liste der Sponsoren:
.//*[@] / ul / li / div / p

Xpath-Syntax

Kehren wir zu den erstellten Abfragen zurück und sehen, wie sie funktionieren.
Betrachten wir die erste Anfrage im Detail

In dieser Abfrage habe ich drei Teile hervorgehoben, um die Funktionen von xpath zu demonstrieren. (Die Aufteilung in Teile ist eingängig)

Erster Teil
.// - Rekursiver Abstieg vom aktuellen Kontext auf null oder mehr Hierarchieebenen. In unserem Fall ist der aktuelle Kontext die Wurzel des Dokuments.

Zweiter Teil
* - irgendein Element
[@. XHTML-Elementbezeichner müssen eindeutig sein. Daher sollte die Abfrage "Jedes Element mit einer bestimmten ID" den einzigen Knoten zurückgeben, den wir suchen.

Wir können ersetzen * auf den genauen Knotennamen div in dieser Anfrage
div [@]

Daher gehen wir den Dokumentbaum zum gewünschten Knoten div [@] hinunter. Wir sind absolut nicht besorgt darüber, aus welchen Knoten der DOM-Baum besteht und wie viele Hierarchieebenen darüber verbleiben.

Dritter Teil
/ ul / li / div / p / a –Xpath-Pfad zu einem bestimmten Element. Der Pfad besteht aus Adressierungsschritten und den Bedingungen für die Überprüfung von Knoten (ul, li usw.). Schritte werden durch einen "/" (Schrägstrich) getrennt.

Xpath-Sammlungen

Es ist nicht immer möglich, über ein Prädikat oder Adressierungsschritte auf einen Knoten von Interesse zuzugreifen. Sehr oft gibt es auf derselben Hierarchieebene wie viele Knoten desselben Typs, und es ist erforderlich, "nur den ersten" oder "nur den zweiten" Knoten auszuwählen. Für solche Fälle werden Sammlungen bereitgestellt.

Mit den xpath-Auflistungen können Sie über den Index auf ein Element zugreifen. Indizes entsprechen der Reihenfolge, in der die Elemente im Originaldokument dargestellt wurden. Die Seriennummer in den Sammlungen wird von eins gezählt.

Basierend auf der Tatsache, dass der "Veranstaltungsort" immer der zweite Absatz nach dem "Konferenznamen" ist, erhalten wir die folgende Abfrage:
.//*[@] / ul / li / div / p
Wobei p das zweite Element in der Menge für jeden Knoten in der Liste / ul / li / div ist.

Ebenso können wir die Liste der Sponsoren auf Anfrage erhalten:
.//*[@] / ul / li / div / p

Einige xpath-Funktionen

In xpath gibt es viele Funktionen zum Arbeiten mit Elementen in einer Sammlung. Ich werde nur einige von ihnen geben.

last ():
Gibt das letzte Element in der Auflistung zurück.
Abfrage ul / li / div / p [last ()] - gibt die letzten Absätze für jeden Knoten der ul-Liste zurück.
Die first () -Funktion wird nicht bereitgestellt. Verwenden Sie den Index "1", um auf den ersten Eintrag zuzugreifen.

text ():
Gibt den Testinhalt eines Elements zurück.
.// a [text () = 'Archiv'] - wir bekommen alle Links mit dem Text "Archiv".

position () und mod:
position () - gibt die Position des Elements in der Menge zurück.
mod - Rest der Teilung.

Durch die Kombination dieser Funktionen erhalten wir:
- ungerade Elemente ul / li [position () mod 2 = 1]
- gerade Elemente: ul / li [position () mod 2 = 0]

Vergleichsoperationen

  • - logisches "mehr"
  • = - logisch "größer als oder gleich"

ul / li [position ()> 2], ul / li [position () - Listenelemente ab der 3. Nummer und umgekehrt.

Abschließend

In einem einfachen Beispiel haben wir die Funktionen von xpath für den Zugriff auf Webseiten-Knoten gesehen.
Xpath ist der Industriestandard für den Zugriff auf xml- und xhtml-, xslt-Transformationselemente.
Sie können es zum Parsen einer beliebigen HTML-Seite verwenden. Wenn der Quell-HTML-Code signifikante Markup-Fehler enthält, leiten Sie ihn ordentlich weiter. Fehler werden behoben.

Versuchen Sie, reguläre Ausdrücke abzulehnen, wenn Sie Webseiten zugunsten von xpath analysieren.
Dadurch wird Ihr Code einfacher und verständlicher. Sie machen weniger Fehler. Reduzieren Sie die Debugging-Zeit.

Pin
Send
Share
Send
Send