You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Selenium XPath链式调用:如何缩短路径并获取多产品标题

问题分析与解决方案

原因说明

你在product.find_element()里用//h4/a时,XPath的//是从整个文档根节点开始递归查找,并非限定在当前product元素的范围内。所以每次遍历都会返回页面中第一个匹配//h4/a的元素,自然只能拿到第一个产品标题。

正确写法

要在当前product节点的范围内搜索,必须在XPath前加**.**,表示从当前节点开始查找:

for product in products:
    card_text = product.find_element(By.XPATH, './/h4/a').text
    if card_text == 'Blackberry':
        product.find_element(By.XPATH, './/div/button').click()
        break

关键细节

  • .//h4/a:.代表当前上下文节点(即循环中的product元素),//表示从当前节点开始递归查找所有后代里的h4/a元素,能精准定位到当前产品卡片内的标题。
  • 点击按钮的XPath也建议加上.,避免全局查找引发的错误。

补充对比

你之前用的div/h4/a能正常工作,是因为它是相对当前节点的直接父子路径,默认从当前节点开始查找子元素,所以不需要.也能限制范围,但灵活性不如.//——如果页面结构有嵌套变化,div/h4/a可能失效,而.//h4/a只要后代存在就能匹配到。

内容的提问来源于stack exchange,提问作者userbana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 14:33:09