Chrome 116.x(Mac)下Selenium驱动权限错误问题求助
解决Chrome 115+版本Selenium驱动权限错误及代码问题
核心问题分析
- 文件混淆:Chrome 115+版本后,你下载的
Google Chrome for Testing.app是测试版Chrome浏览器,并非chromedriver驱动程序。真正的chromedriver仍是独立的可执行文件,只是下载入口迁移到了Chrome for Testing的资源体系中。 - 代码重复初始化:当前代码里两次调用
webdriver.Chrome(),第一次错误指向浏览器应用路径,第二次使用传入的seleniumDriver参数,逻辑冗余且易引发资源冲突。 - 权限问题:若已下载正确的
chromedriver,出现权限错误通常是因为驱动文件缺少可执行权限(仅针对macOS/Linux系统)。
分步解决方案
1. 获取正确的chromedriver
选择与你的Chrome 116.x版本匹配的chromedriver(区分操作系统:macOS/Windows/Linux),下载后得到独立的可执行文件(mac/Linux下为chromedriver,Windows下为chromedriver.exe)。
2. 修复权限(macOS/Linux)
打开终端,进入chromedriver所在目录,执行命令赋予可执行权限:
chmod +x chromedriver
3. 修正代码逻辑
移除重复的webdriver.Chrome()初始化,将配置整合到一次初始化中,确保路径指向正确的驱动文件:
def __init__(self, seleniumDriver): from selenium import webdriver try: options = webdriver.ChromeOptions() options.add_argument("start-maximized") options.add_experimental_option("excludeSwitches", ["enable-automation"]) options.add_experimental_option('useAutomationExtension', False) # 仅初始化一次driver,传入正确的驱动路径 self.driver = webdriver.Chrome(options=options, executable_path=seleniumDriver) # 执行CDP命令,无需重复执行 self.driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", { "source": """ Object.defineProperty(navigator, 'webdriver', { get: () => undefined }) """ }) self.driver.execute_cdp_cmd("Network.enable", {}) except Exception as e: print(e)
额外提示
如果使用Selenium 4.6及以上版本,可借助自动驱动管理功能,无需手动指定路径:安装chromedriver-manager包后,代码中只需初始化Chrome()并传入options,框架会自动匹配对应版本的驱动。
内容的提问来源于stack exchange,提问作者nachete
相关产品推荐
相关产品推荐

