Auf meiner Webseite gibt es eine div
mit einer class
namens Test
.
Wie kann ich sie mit XPath
?
Auf meiner Webseite gibt es eine div
mit einer class
namens Test
.
Wie kann ich sie mit XPath
?
Dieser Selektor sollte funktionieren, wird aber effizienter sein, wenn Sie ihn durch Ihr geeignetes Markup ersetzen:
//*[contains(@class, 'Test')]
Oder, da wir wissen, dass das gesuchte Element ein div
:
//div[contains(@class, 'Test')]
Da dies aber auch auf Fälle wie class="Testvalue"
ou class="newTest"
Die von @Tomalak in den Kommentaren bereitgestellte Version lautet besser :
//div[contains(concat(' ', @class, ' '), ' Test ')]
Wenn Sie wirklich sicher sein wollen, dass es korrekt übereinstimmt, können Sie auch die Funktion normalize-space verwenden, um Leerzeichen um den Klassennamen herum zu entfernen (wie von @Terry erwähnt):
//div[contains(concat(' ', normalize-space(@class), ' '), ' Test ')]
Beachten Sie, dass in all diesen Versionen das * am besten durch den Namen des Elements ersetzt werden sollte, mit dem Sie tatsächlich übereinstimmen möchten, es sei denn, Sie möchten jedes einzelne Element des Dokuments nach der gegebenen Bedingung durchsuchen.
En NUR die richtige Vorgehensweise mit XPath :
//div[contains(concat(" ", normalize-space(@class), " "), " Test ")]
Die Funktion normalize-space
entfernt führende und nachgestellte Leerzeichen und ersetzt auch Folgen von Leerzeichen durch ein einzelnes Leerzeichen.
Wenn Sie nicht viele dieser Xpath-Abfragen benötigen, sollten Sie eine Bibliothek verwenden, die CSS-Selektoren in XPath konvertiert, da CSS-Selektoren in der Regel viel einfacher zu lesen und zu schreiben sind als XPath-Abfragen. In diesem Fall könnten Sie zum Beispiel den Selektor div.Test
um genau das gleiche Ergebnis zu erzielen.
Einige Bibliotheken, die ich finden konnte:
XPath hat eine enthält-Token Funktion, speziell entwickelt für diese Situation:
//div[contains-token(@class, 'Test')]
Sie wird nur in der neuesten Version von XPath (3.1) unterstützt, so dass Sie eine aktuelle Implementierung benötigen.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.