Python Selenium报错:dict对象无send_keys/get_attribute属性如何解决
Selenium 运行报错
AttributeError: 'dict' object has no attribute 'send_keys' 解决方法 该报错是由于find_element方法未正常返回Selenium WebElement对象,而是返回了字典类型的异常结果,按以下步骤排查即可解决:
1. 验证版本兼容性
Selenium、Chrome浏览器、ChromeDriver三者版本不匹配是触发该问题的最高发原因:
- 首先查看本地Chrome浏览器版本:打开Chrome浏览器 -> 设置 -> 关于Chrome,即可看到当前大版本号
- Selenium 4.6及以上版本内置了Selenium Manager,可自动匹配对应版本的ChromeDriver,不需要手动下载,直接升级Selenium到最新稳定版即可:
pip install --upgrade selenium - 如果使用低于4.6的Selenium版本,需要手动下载和Chrome大版本一致的ChromeDriver,放置在脚本同级目录或者系统PATH路径下。
2. 修正驱动初始化代码
错误的驱动初始化配置也可能导致元素查找返回异常结果,可使用以下标准初始化写法替换原有代码:
from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC print("sample test case started") # 配置Chrome启动参数 chrome_options = Options() chrome_options.add_argument("--start-maximized") # 初始化驱动 driver = webdriver.Chrome(options=chrome_options) driver.get("替换为你实际要访问的目标URL") # 加入显式等待,确保元素加载完成后再操作 element = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.ID, "Username")) ) element.send_keys("替换为实际用户名") driver.quit() print("sample test case successfully completed")
3. 异常排查
如果按以上步骤操作后仍然报错,可以先做简单排查定位问题:
- 执行
driver.get后打印页面源码,确认页面正常加载:print(driver.page_source) - 确认目标页面的用户名输入框ID确实为
Username,ID区分大小写,也可替换为By.NAME、By.XPATH等其他定位方式验证。
内容的提问来源于stack exchange,提问作者Martijn Hiemstra
相关产品推荐
相关产品推荐

