根据另一个元素xpath找到一个元素

时间:2019-11-03 13:15:39

标签: python python-3.x selenium selenium-webdriver web-scraping

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

非常感谢!

2 个答案:

答案 0 :(得分:1)

下面是必需的xpath:

  

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

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

答案 1 :(得分:0)

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

//*[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]