通过 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读取元素信息