通过 xpath 在 Python 中查找元素

Posted

技术标签:

【中文标题】通过 xpath 在 Python 中查找元素【英文标题】:Finding element in Python by xpath 【发布时间】:2020-02-06 00:29:22 【问题描述】:

我正在尝试单击 xpath 为的项目:

//*[@id="single-71048602500"]/div[2]/div[1]

有更多以//*[@id="single"] 开头的元素,并且每次页面加载时数字都会改变。所以唯一具体的位是“single”和/div[2]/div[1].的组合

CSS_selector也有编号,所以没用。

选择元素的代码是什么?

我正在使用 Python 和 Selenium。

【问题讨论】:

我可以获取应用程序的网址吗?也请告诉我您要点击哪个元素。 显示你的 html 源代码 Selecting elements whose attribute begins with something in XPath的可能重复 试试这个 xpath 并告诉我它是怎么回事(//*[contains(@id="single")]/div[2]/div[1])[index of an element ] 【参考方案1】:

在这里,我假设您要单击所有具有“single”和/div[2]/div[1] 组合的元素。

首先,尝试从所需元素的父元素中获取所有元素。现在您将获得 WebElements 列表。遍历所有元素并单击 id 以单个开头的元素。

sd = mainpage.find_elements_by_xpath('//*[@id]') #parent webelement
for i in sd:

        if str(i.get_attribute('id')).startswith("single"):

             j = i.find_element_by_xpath('//*[@id=""]/div[2]/div[1]'.format(i.get_attribute('id')))
             j.click()

【讨论】:

find_elements_by_xpath("//*[starts-with(@id, 'single')]/div[2]/div[1]") 应该会立即找到所需的元素 阿德里安 W,谢谢,完美。我不知道您可以将 /div[2] 等添加到开头的末尾。 Brill,再次感谢。【参考方案2】:

试试这个 xpath,让我知道它是怎么回事。

(//*[contains(@id,"single")]/div[2]/div[1])[index of an element ]

下面的 xpath 将帮助您找到所有包含单个 id 值的元素

//*[contains(@id,"single")]/div[2]/div[1]

【讨论】:

约苏瓦 A,感谢您的帮助。完美运行。干杯

以上是关于通过 xpath 在 Python 中查找元素的主要内容,如果未能解决你的问题,请参考以下文章

Python通过xpath查找元素通过selenium读取元素信息

python - 查找包含字符串的元素的xpath

在python中解析xml以查找所有元素(节点)的xpath

XPath

python简单使用xpath查找网页元素

selenium3 + python - xpath定位