Ich habe diesen Xpath-Ausdruck, der nicht funktioniert
"//div[child[0]::h4[text()[contains(.,'Dir')]]]/a"
Um diesen HTML zu analysieren:
<div class="txt">
<h4 class="c1">
Dir
</h4>
<a href="/name/myname/">Bob</a>
</div>
Ich versuche, den Verbindungsknoten zu erreichen (a). Es gibt andere HTML-Tags im Dokument mit der gleichen div / h4-Hierarchie, mit dem einzigen Unterschied, dass der innere Text des h4-Tags ist. Also, wie überprüfe ich, dass die Div-Klasse (1) einen Sub-h4-Knoten mit dem inneren Text "dir" UND (2) den ersten Link-Knoten (a) hat. Gehen Sie nicht davon aus, dass der Link das nächste Geschwister von h4 ist.
Könntest du nicht einfach diesen XPath benutzen?
"//div[h4[contains(text(),'Dir')]]/a"
child[0]
ist keine gültige Achse AFAIK, so dass es fehlschlägt.
Ich weiß nicht, ob das allein Ihre Bedingungen erfüllen würde, ohne ein vollständigeres HTML-Beispiel zu sehen. Aber das funktioniert sicherlich für diesen.
Wenn es möglich ist, dass es mehrere h4
Elemente innerhalb des div
und Sie nur das erste überprüfen möchten:
"//div[h4[1][contains(text(),'Dir')]]/a"
Wie überprüfe ich, dass die Div-Klasse (1) einen Sub-h4-Knoten mit dem inneren Text "dir" UND (2) den ersten Link-Knoten (a) hat
benutzen:
"//div[@class='txt' and h4[contains(.,'Dir')]]/a[1]"