Python Selenium出现AttributeError: 'NoneType'无get属性问题求助
Selenium AttributeError 问题排查与解决
错误核心原因
你遇到的AttributeError: 'NoneType' object has no attribute 'get',本质是调用.get()方法的browser实例根本没初始化成功,变成了None值。
具体排查方向及解决方法
1. EdgeDriver与浏览器版本不匹配
即使都是最新版,也可能出现浏览器自动更新后,Driver版本没同步的情况:
- 打开Edge,点击右上角三个点→设置→关于Microsoft Edge,查看精确版本号
- 下载完全对应版本的EdgeDriver,替换掉当前使用的Driver文件
2. Driver路径配置错误
初始化时没正确指定Driver路径,导致webdriver无法启动浏览器:
- 初始化代码显式指定Driver路径,示例:
from selenium import webdriver from selenium.webdriver.edge.service import Service # 替换成你的EdgeDriver实际路径 service = Service(executable_path=r"C:\Users\你的用户名\Downloads\msedgedriver.exe") browser = webdriver.Edge(service=service) # 先判空再操作 if browser: browser.get("https://www.example.com")
3. 初始化逻辑有漏洞
比如browser变量只在某个条件分支里赋值,分支没触发就会变成None:
- 检查代码,确保不管什么分支,browser都能被正确初始化;或者在使用前强制判空
4. 权限不足
脚本没有权限启动浏览器进程:
- 右键点击脚本,选择「以管理员身份运行」试试;或者检查Edge安装目录的读写权限
预防类似属性错误的通用方案
- 每次操作前判空:调用browser的任何方法前,先加
if browser is not None:判断 - 用显式等待代替固定延迟:比
time.sleep()更可靠,精准等待页面元素或状态加载完成,示例:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By # 等待页面目标元素出现,最长等10秒 WebDriverWait(browser, 10).until( EC.presence_of_element_located((By.ID, "target-element-id")) )
- 完善异常处理:把初始化、页面操作都纳入try-except,同时finally块里确保浏览器能正常退出,示例:
browser = None try: service = Service(executable_path=r"你的Driver路径") browser = webdriver.Edge(service=service) browser.get("https://example.com") # 其他操作... except Exception as e: print(f"出错了: {str(e)}") finally: if browser is not None: browser.quit()
内容的提问来源于stack exchange,提问作者Jack Jack
相关产品推荐
相关产品推荐

