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

2024-05-15 20:43:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用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]

非常感谢!你知道吗


Tags: namediv名称信息过程htmlseleniumcurrent
2条回答

以下是必需的xpath:

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

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

首先需要获取包含名称的元素,这样做是正确的

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

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

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

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

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

所以,你的表达应该是:

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

相关问题 更多 >