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

Selenium Python出现TypeError: 'str' object is not callable错误求助

Selenium Python TypeError 问题解决

问题描述

用Python编写Selenium代码时触发TypeError: 'str' object is not callable错误。

原代码:

email = driver.find_element(By.ID("email-input")).getAttribute("id")

尝试修改后的代码:

email = driver.find_element(By.ID("email-input")).text

问题仍未解决,报错信息:

Traceback (most recent call last): File "C:\Users\user\Desktop\LAB AUTOMATION\LAB.py", line 42, in email = driver.find_element(By.ID, "email-input").getAttribute("id") File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 855, in find_element return self.execute(Command.FIND_ELEMENT, { File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 428, in execute self.error_handler.check_response(response)

错误原因及修复方案

核心错误点

  1. 元素定位写法错误:By.ID是字符串常量,不是函数,不能用By.ID("email-input")这种调用方式,必须把By.ID作为第一个参数,元素ID值作为第二个参数传入find_element。
  2. 属性获取方法名错误:Python版Selenium中获取元素属性的方法是get_attribute()(小写开头),而非Java风格的getAttribute()。

正确代码示例

场景1:获取元素的id属性

email = driver.find_element(By.ID, "email-input").get_attribute("id")

场景2:获取元素的文本内容

email = driver.find_element(By.ID, "email-input").text

额外建议(处理动态元素)

如果目标元素是动态加载的,建议添加显式等待避免元素未加载完成就执行操作:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 最长等待10秒,直到元素出现
email_element = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "email-input"))
)
# 获取id属性
email_id = email_element.get_attribute("id")
# 或者获取文本
email_text = email_element.text

内容的提问来源于stack exchange,提问作者Syed Asad Haider

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 09:10:22