Selenium更新后headless属性弃用及options参数报错,求代码修复
问题修复方案
你的代码存在两个问题,分别对应报错里的警告和TypeError,以下是针对性修复:
1. 解决 TypeError: 参数重复问题
Selenium 4.x版本后,webdriver.Chrome()不再直接接收驱动路径作为第一个位置参数,需要通过Service对象传递驱动路径,否则会触发参数冲突报错。
2. 解决 headless 属性废弃警告
options.headless = True/False已被官方废弃,需改用添加命令行参数的方式启用无头模式,推荐使用Selenium 4.10+支持的新无头模式--headless=new(该模式更接近真实浏览器环境)。
修复后的完整代码
from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager # 控制是否启用无头模式 is_headless = False # 改为True即可启用无头模式 # 初始化Chrome选项 options = webdriver.ChromeOptions() if is_headless: options.add_argument('--headless=new') options.add_argument('--log-level 3') # 初始化Chrome驱动 driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options) driver.maximize_window()
关键修改点说明
- 新增导入
Service类,用于管理ChromeDriver的路径 - 用变量
is_headless控制无头模式开关,替代原废弃的options.headless属性 - 启用无头模式时添加
--headless=new参数,替代旧的属性赋值方式 - 初始化驱动时通过
service关键字参数传递驱动路径,彻底解决参数冲突问题
内容的提问来源于stack exchange,提问作者Patric Holly
相关产品推荐
相关产品推荐

