Reputation: 9672
I have here html like:
<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>
I need to get the <div class="select-menu-item js-navigation-item">
that includes the child span with the_username813
.
I tried a few things that failed, like:
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 ')]
How can I get this parent div element using Xpath?
Upvotes: 1
Views: 3173
Reputation: 52665
Try below Xpath
expression and let me know the result:
//div[@class="select-menu-item js-navigation-item" and .//span[normalize-space(text())="the_username813"]]
Also note that <div class="select-menu-item js-navigation-item">
is not a direct parent
, but ancestor
element, so you also might use
//span[normalize-space(text())="the_username813"]/ancestor::div[@class="select-menu-item js-navigation-item"]
Upvotes: 1