Selenium开发YouTube工具运行时报TypeError: 'str' object is not callable
Selenium 定位元素报
'str' object is not callable错误修复 报错根因
By.XPATH是Selenium内置的字符串常量,值固定为"xpath",本身不是可调用的方法。你当前的写法把定位表达式直接作为参数传给By.XPATH(),相当于尝试调用一个字符串对象,因此触发类型错误。
同时driver.find_element()方法要求传入两个独立参数:第一个是元素定位方式,第二个是对应定位方式的匹配表达式,你当前的写法把两个参数合并成了一个,不符合方法调用规范。
修复方法
将错误的元素定位行:
CV = driver.find_element(By.XPATH('//*[@id="movie_player"]/div[5]/button'))
修改为符合Selenium语法的双参数传参形式:
CV = driver.find_element(By.XPATH, '//*[@id="movie_player"]/div[5]/button')
额外注意事项
- 确认代码顶部已正确导入By类,否则会触发名称错误,导入语句为:
from selenium.webdriver.common.by import By - 代码中固定写死
time.sleep(5)的硬等待稳定性极差,受网络速度、页面加载状态、广告弹窗影响很容易出现元素还没加载完成就执行点击的报错,建议替换为Selenium的显式等待逻辑,等元素可点击后再执行操作。 - 循环重复访问同个视频链接触发点击的逻辑很容易触发YouTube的反爬机制,可能导致IP被限制、账号被封禁,使用时需要注意风险。
内容的提问来源于stack exchange,提问作者Long96
相关产品推荐
相关产品推荐

