Ich teste steampowered.com und ich muss Element auf dem Formular mit der Bedingung finden, dass es Nachkommen mit Text "Games" hat. Es ist das Element darunter (es findet im div mit der Klasse "store_nav") und ich benutze solche xpath, um es zu lokalisieren.Finden von Element über Xpath mit Achsen
//div[contains(@class,'store_nav')]/div[descendant::a[contains(text(),'Games')]]"
<div class="store_nav_bg">
<div class="store_nav">
<div id="foryou_tab" class="tab flyout_tab" data-flyout="foryou_flyout" data-flyout-align="left" data-flyout-valign="bottom" onmouseover="EnsureStoreMenuTagsLoaded('#foryou_yourtags');">
<div id="foryou_flyout" class="popup_block_new flyout_tab_flyout responsive_slidedown" style="visibility: visible; top: 42px; left: 0px; display: none; opacity: 0.245479;">
<div id="genre_tab" class="tab flyout_tab" data-flyout="genre_flyout" data-flyout-align="left" data-flyout-valign="bottom">
<span class="pulldown">
<a class="pulldown_desktop" href="http://store.steampowered.com/games/?snr=1_4_4__12">Games</a>
</span>
<div id="genre_flyout" class="popup_block_new flyout_tab_flyout responsive_slidedown" style="visibility: visible; top: 42px; left: 131.667px; display: none; opacity: 1;">
<div id="software_tab" class="tab flyout_tab " data-flyout="software_flyout" data-flyout-align="left" data-flyout-valign="bottom">
<div id="software_flyout" class="popup_block_new flyout_tab_flyout responsive_slidedown" style="display: none;">
<div id="hardware_tab" class="tab flyout_tab " data-flyout="hardware_flyout" data-flyout-align="left" data-flyout-valign="bottom">
<div id="hardware_flyout" class="popup_block_new flyout_tab_flyout responsive_slidedown" style="display: none;">
<div id="videos_tab" class="tab flyout_tab " data-flyout="videos_flyout" data-flyout-align="left" data-flyout-valign="bottom">
<div id="videos_flyout" class="popup_block_new flyout_tab_flyout responsive_slidedown" style="display: none;">
<a class="tab " href="http://store.steampowered.com/news/?snr=1_4_4__12">
<div class="search_area">
</div>
</div>
Das Problem ist, dass dieser XPath auf falsches Element zeigt (Feuerpfad zeigt sogar mehrere Elemente). Zum Vergleich: Dieser XPath funktioniert einwandfrei.
//div[contains(@class,'store_nav')]/div[span/a[contains(text(),'Games')]]
Was mache ich falsch mit dem Nachkommenelement?
Ihr XPath verweist auf einen 'store_nav'-Klassenwert, aber Ihr Markup hat keinen solchen '@ class'-Wert. Veröffentlichen Sie eine [mcve] oder Ihre Frage wird als Off-Topic geschlossen. – kjhughes