python - XPath 从两个子文本获取父元素

标签 python selenium xpath

<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”。

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

这是我已经想出的:

    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 + "')]]")

最佳答案

尝试

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

关于python - XPath 从两个子文本获取父元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42471303/

相关文章:

java - Java 跳过 html 表的第一行

C# Selenium - Click/Clear/SendKeys 不能正常工作,但在 Debug模式下工作

javascript - XPath 表达式中的 Protractor Javascript 传递参数

xslt 匹配特定节点之前的所有节点

python rstrip或通过字符模式删除字符串结尾

python - 在 python 终端中打印矩形

python - 如何使用 pandas 将 JSON 或 DICT 传递到数据框中?

python - 使用 jupyter lab 重新连接以远程运行内核

java - 使用 Selenium WebDriver 的 Spring Boot Web 应用程序

html - 如何使用 Xpath 定位此元素?