【问题标题】:Get parent of Xpath with certain class searching by child span通过子跨度搜索特定类获取 Xpath 的父级
【发布时间】:2021-04-27 02:27:38
【问题描述】:

我这里有类似的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 的子跨度的&lt;div class="select-menu-item js-navigation-item"&gt;

我尝试了一些失败的方法,例如:

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 元素?

【问题讨论】:

    标签: javascript html xml xpath


    【解决方案1】:

    试试下面的Xpath 表达式,让我知道结果:

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

    还要注意&lt;div class="select-menu-item js-navigation-item"&gt;不是直接的parent,而是ancestor元素,所以你也可以使用

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

    【讨论】:

    • 是的,第一个是我的目标。我不知道你可以在那里使用,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-25
    • 1970-01-01
    • 2013-07-25
    • 2010-12-14
    • 2018-07-02
    • 1970-01-01
    相关资源
    最近更新 更多