繁体   English   中英

基于另一个元素 xpath 定位一个元素

[英]Locate an element based on another element xpath

我正在尝试使用 selenium 和 webdriver 自动化流程。

html 看起来像这样:

<span class="contract-item">
    <span class="contract-label">
        <span class="contract-name">Jimmy</span>
    </span>
    <div class="current-stats">
        <span class="info"></span>

我面临的问题是有很多“合同项目”和“信息”类。 我只想查找特定“合同名称”的信息。 但是,通过找到“合同名称”,我丢失了信息。 如何获取特定名称的“信息”?

到目前为止我有这个。

team_name = self.driver.find_elements_by_xpath("//*[contains(text(), {})]".format(jimmy))[1]

非常感谢!

下面是需要的 xpath:

//*[@class='contract-item' and contains(.,'Jimmy')]/div/span[@class='info']

您只需将联系人姓名字符串(即 Jimmy)更改为所需的字符串,您将获得相应的信息。

您需要首先获取包含名称的元素,您正确地做到了

//*[contains(text(), "{}")]

然后你需要 go 在 info 元素和你找到的元素之间最近的公共父级,每个/..将 go HTML 树上的一个元素。

//*[contains(text(), "{}")]/../..

最后,通过 class 找到正确的元素过滤

//*[contains(text(), "{}")]/../..//span[@class="info"]//text()

所以,你的表达应该是:

team_name = self.driver.find_elements_by_xpath('//*[contains(text(), "{}")]/../..//span[@class="info"]//text()'.format('jimmy'))[1]

不应该像"//*[contains(text(), {})]".format("jimmy")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM