Ich versuche, nach einem Knoten zu suchen, der auf Text basiert, der auf einem Kind-/Enkelknoten seines unmittelbaren Bruders verfügbar ist. Der HTML-Code sieht wie folgt aus:XPath Selenium VBA
<div>
<div class="searchedDivClass" id="DynamicId1">
</div>
<div class="classType1">
//<h1> some text </h1>
</div>
//
<div class="searchedDivClass">
</div>
<div class="classType2">
//<p> some other text </p>
</div>
</div>
Wie Sie den gesuchten Text in jeder Art von Tag sein kann, sehen können, aber es ist immer ein Teil des Textes.
dachte ich, dass die folgende XPath funktionieren würde:
//div[contains(@class,'searchedDivClass')]
Stellt sicher, dass es das richtige Maß an div zurückgibt, die ich suche, nicht höher:
drive.FindElementsByXPath("//div[following-sibling::div[1][//*[contains(text(),'some text')]] and contains(@class,'searchedDivClass')]")
in Stücke Gegliedert oder tiefer im Baum.
//div[following-sibling::div[1][//*[contains(text(),'some text')]]
Sucht das erste Geschwister des div oben gefunden. Innerhalb dieses Geschwisters sucht es nach einem Element, das den gesuchten Text enthält.
Wenn ich jedoch sehe, wie viele Elemente es zurückgibt, ist es tatsächlich größer als die Anzahl der Elemente, die die 'searchedDivClass' haben.
Beachten Sie, dass das Entfernen des // * [enthält (text(), 'some text')]
Mindestens gibt die Anzahl der Elemente mit der gesuchten Klasse.
Schließlich gibt der letzte XPath für sich selbst das Element zurück, das den Text enthält.
Irgendeine Idee oder Empfehlungen?
Welches Element, das Sie tatsächlich auswählen möchten? –
Ich habe meine Antwort bearbeitet, um sie etwas klarer zu machen. Ich versuche, das Div, das die "DynamicId1" hat, basierend auf dem Text in einem Unterknoten seiner unmittelbaren Geschwister zu bekommen. – havan
Können Sie uns genau mitteilen, welches Element/welchen Text Sie suchen und in Bezug auf welches Element/Text? – DebanjanB