【问题标题】:XPath Get parent element from two children textsXPath 从两个子文本中获取父元素
【发布时间】:2017-02-26 16:47:33
【问题描述】:
<div class="inner-article">
    <a style="height:150px;" href="this is a link"><img width="150" height="150" src="this is an image" alt="K1 88ahiwyu"></a>
    <h1><a class="name-link" href="/shop/jackets/pegroxdya/dao7kdzej">title</a></h1>
    <p><a class="name-link" href="/shop/jackets/pegroxdya/dao7kdzej">subtitle</a></p>
</div>

你好!

我需要找到一个 XPath 来获取两个“a”孩子的标题和副标题为 class="inner-article" 的“div”。我要操作的网站有很多这样的内文,我需要找到一个具体的,只给一个标题和一个副标题。

例如:该网站有一篇标题为“Company® Leather Work Jacket”的内部文章和一个颜色为“Silver”的副标题。

现在我需要能够找到“div”元素,即使标题只有关键字“Work Jacket”,副标题只有“Silver”。

这是我已经想到的:

    e1 = driver.find_element_by_xpath("//*[text()[contains(.,'" + kw + "')]]")

kw 是一个包含标题关键字的字符串,如果我将其打印出来,它会正确响应“a”元素并单击它也可以,但它不够具体,因为还有更多对象也有这些关键字在他们的标题中,这就是为什么我还需要始终包含颜色的副标题(这里称为字符串“clr”):

    e2 = driver.find_element_by_xpath("//*[text()[contains(.,'" + clr + "')]]")

这也可以正常点击字幕,但只有颜色也会在网站上返回多个对象。

这就是为什么我需要找到带有标题关键字和副标题颜色的“div”元素。

我试过了,但它不起作用:

e1 = driver.find_element_by_xpath("//*[text()[contains(.,'" + kw + "') and contains(.,'" + clr + "')]]")

【问题讨论】:

    标签: python selenium xpath


    【解决方案1】:

    试试

    driver.find_element_by_xpath("//div[h1/a[contains(text(),'" + kw + "')] and p/a[contains(text(),'" + clr + "')]]")
    

    【讨论】:

    • 非常感谢,太完美了!
    【解决方案2】:

    可以学习更多xpath语法。Refer to this link

    在您的情况下,您可以像这样使用 xpath。

    ("//*[text()[contains(.,'" + kw + "')]]/parent::div[1]")
    

    【讨论】:

    • 谢谢,但我还需要在 XPath 中实现副标题,因为正如我所说,仅标题不够具体,并且会给我多个结果。
    • 您可以在两个查询之间使用“and”语句。
    猜你喜欢
    • 2020-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-12
    • 1970-01-01
    • 2015-05-10
    • 2021-06-19
    • 2017-12-09
    相关资源
    最近更新 更多