2017-04-03 40 views
1

得到與某一類搜索的XPath的父母我這裏有HTML這樣的:由子跨度

<div class="select-menu-item js-navigation-item">...</div> 
<div class="select-menu-item js-navigation-item">...</div> 
<div class="select-menu-item js-navigation-item"> 
    <svg ...></svg> 

    <div class="select-menu-item-gravatar"></div> 
    <div class="select-menu-item-text lh-condensed"> 
     <span class="select-menu-item-heading"> 
      the_username813 
      <span class="description">Last name, First name</span> 
     </span> 
    </div> 
</div> 

我需要得到包括與the_username813孩子跨度<div class="select-menu-item js-navigation-item">

我試過失敗了,就像幾件事情:

ipdb> element = self.driver.find_element_by_xpath("//span[contains(., 'the_username813')]/parent::div[contains(c 
oncat(' ', @class, ' '), ' js-navigation-item ')]") 
*** NoSuchElementException: Message: Unable to locate element: //span[contains(., 'the_username813')]/parent::div[contains(concat(' ', @class, ' '), ' js-navigation-item ')] 

我怎樣才能使用XPath此父div元素?謝謝

回答

1

試試下面Xpath表達,讓我知道了結果:

//div[@class="select-menu-item js-navigation-item" and .//span[normalize-space(text())="the_username813"]] 

還要注意的是<div class="select-menu-item js-navigation-item">不是直接parent,但ancestor元素,所以你也可以使用

//span[normalize-space(text())="the_username813"]/ancestor::div[@class="select-menu-item js-navigation-item"] 
+0

沒錯,第一個是我的目標。我不知道你可以用在那裏,謝謝 – codyc4321