Python报错'str' object is not callable但代码无str变量求助
问题根因
该报错和自定义str变量无关,核心是Selenium元素定位的语法书写错误。
Selenium中By类的所有定位属性(包括By.NAME、By.ID、By.CLASS_NAME等)都是字符串类型的固定常量,本身不是可调用的函数/方法。你当前代码把本该传给find_element的定位值,错误写在了By.NAME的括号中,等价于执行"name"("_username")——尝试把字符串对象当函数调用,直接触发'str' object is not callable类型错误。
修复方案
修正定位语句的参数格式即可。find_element方法需要传入两个参数,第一个是定位策略常量(不需要加括号传参),第二个是对应的定位值,二者用逗号分隔:
from selenium import webdriver from selenium.webdriver.common.by import By username = "***" password = "***" driver = webdriver.Firefox() driver.get("***") # 修正后的定位语句 driver.find_element(By.NAME, "_username").send_keys(username)
补充排查项
如果修正语法后仍有同类报错,依次检查以下两点:
- 执行
pip show selenium确认安装的Selenium为4.x正式版本,若为3.x版本或4.0以下的测试版,执行pip install --upgrade selenium升级到稳定版 - 检查当前运行的代码文件(包括未贴出的部分)、项目中导入的其他自定义模块,不存在将
str、find_element、By相关属性赋值为字符串的名称覆盖操作
内容的提问来源于stack exchange,提问作者Deniz Yurtseven
相关产品推荐
相关产品推荐

