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

使用Selenium的find_elements_by_xpath获取文本时出现avail未定义错误如何解决

问题修复方案

核心错误原因

  • 缩进不符合Python语法规范:for循环的执行语句必须缩进,你当前代码里avail = i.text()没有缩进,不属于for循环的执行范围。如果driver.find_elements_by_xpath没有匹配到任何元素,返回的是空列表,for循环不会执行,avail变量从未被定义,打印时就会触发NameError。
  • Selenium API使用错误:WebElement对象的文本内容是text属性,不是可调用的方法,不需要加括号。

修复后完整代码

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

# 初始化驱动
driver = webdriver.Chrome('/Users/victorfichtner/Downloads/Chromedriver')
driver.get('https://www.myntra.com/smart-watches/boat/boat-unisex-black-storm-m-smart-watch/13471916/buy')

# 提前定义avail默认值,避免匹配不到元素时报错
avail = "未匹配到目标元素"
a = driver.find_elements_by_xpath("//*[@class='pdp-add-to-bag pdp-button pdp-flex pdp-center']")

# for循环内语句缩进4个空格,修正text调用方式
for i in a:
    avail = i.text

driver.quit()
print(avail)

额外优化建议

  • 如果目标页面是动态渲染的,可以在driver.get之后加隐式等待,避免元素还没加载完成就执行匹配逻辑:driver.implicitly_wait(10)
  • 检查目标元素的class属性是否正确,网站更新后class属性可能会发生变化,导致匹配结果为空。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:27:03