Python Selenium启动Brave浏览器成功但无法访问指定URL问题
故障根因
Ubuntu下snap安装的Brave默认开启强沙箱隔离,会拦截Selenium驱动与浏览器渲染进程间的CDP调试通信,直接导致driver.get()这类操作指令静默失效——浏览器本身能正常启动、显示自动化控制提示,但所有控制指令都无法传入进程,因此不会跳转URL、也不会抛出显式报错。自行下载的通用版chromedriver与snap编译的Brave存在构建参数差异,会进一步加剧通信异常。
修复步骤
- 启动参数补全沙箱适配项:在ChromeOptions中添加
--no-sandbox和--disable-dev-shm-usage两个参数,放开snap沙箱对跨进程调试通信的拦截。 - 替换驱动为Brave内置版本:不要使用自行下载的通用chromedriver,snap版Brave自带版本完全匹配的驱动,固定路径为
/snap/brave/current/usr/lib/chromium-browser/chromedriver,不存在版本或构建参数不兼容问题。 - 运行前清理残留进程:执行终端命令
pkill brave杀掉所有后台驻留的Brave僵尸进程,避免残留进程占用调试端口导致通信失败。
修正后可运行代码
from selenium import webdriver brave_path = "/snap/bin/brave" option = webdriver.ChromeOptions() option.binary_location = brave_path # 适配snap沙箱的必加参数 option.add_argument("--no-sandbox") option.add_argument("--disable-dev-shm-usage") # 调用Brave内置的匹配驱动 driver = webdriver.Chrome( executable_path="/snap/brave/current/usr/lib/chromium-browser/chromedriver", options=option ) driver.get("https://youtube.com/")
补充:如果使用Selenium 4.6及以上版本,可省略
executable_path参数,Selenium Manager会自动识别Brave内置驱动,仅需添加两个沙箱适配参数即可正常运行。
内容的提问来源于stack exchange,提问作者mahiatlinux
相关产品推荐
相关产品推荐

