2017-03-30 66 views
-1

我正在測試steampowered.com,我需要在表單中找到具有帶有文本「遊戲」後裔的條件的元素。 這是下面的元素(它位於類「store_nav」的div),我正在使用這樣的xpath來找到它。通過帶有座標軸的xpath查找元素

//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> 

問題是,這個xpath指向不正確的元素(firepath顯示甚至幾個元素)。爲了比較,這個xpath正常工作

//div[contains(@class,'store_nav')]/div[span/a[contains(text(),'Games')]] 

我在做什麼不正確的後代元素?

+0

您的XPath引用了'store_nav'類的值,但您的標記沒有這種「@ class」值。發佈[mcve]或者你的問題將被作爲題外話閉幕。 – kjhughes

回答

0
//div[contains(@class,'store_nav')] 

這將匹配div class="store_nav_bg"div class="store_nav"節點。

此XPath:

//div[contains(@class,'store_nav')]/div[descendant::a[contains(text(),'Games')]] 

將匹配div class="store_nav"加上所有div/span/a元素你後,因爲div class="store_nav"a型的後代。 「後代」與所有後代相匹配,但它們的層次結構遠不止於後者。如果您只想要div/span/a元素,則必須指定該元素。

相關問題