Python Selenium:使用XPath定位子元素获取指定元素的问题
正确的XPath写法及代码修正
针对你的需求,直接给出对应的XPath定位器,同时修正代码中获取文本的小问题(Selenium获取元素文本标准方式是.text,而非get_attribute("text")):
elems = driver.find_elements_by_xpath("//div[@class='xyz']") for elem in elems: # 获取<p>Comment</p>元素 comment = elem.find_element_by_xpath(".//p[text()='Comment']") print(comment.text) # 获取两个<a href>元素 files = elem.find_elements_by_xpath(".//buttons/ul/li/a") for file in files: print(file.text) # 依次输出Name 1、Name 2 file.click()
XPath定位说明:
- 定位Comment元素:
.//p[text()='Comment']- 开头的
.表示从当前elem(class为xyz的div)的上下文开始查找,避免全局搜索干扰 [text()='Comment']通过精准匹配文本内容,确保定位到目标p标签
- 开头的
- 定位a元素:
.//buttons/ul/li/a- 同样以
.开头,基于当前elem的上下文 - 按照HTML层级结构,直接定位到buttons容器下ul列表内的所有a标签,刚好匹配你需要的两个链接
- 同样以
如果HTML中Comment的位置固定,也可以用层级路径定位:".//div/h2/div/p",不过文本匹配的方式容错性更强,即便结构微调也能稳定找到目标元素。
内容的提问来源于stack exchange,提问作者macxpat
相关产品推荐
相关产品推荐

