Ubuntu子系统运行Selenium ChromeDriver时Chrome无法启动求助
解决WSL环境下Selenium ChromeDriver的启动问题
我来帮你一步步搞定这些问题,你遇到的情况是典型的Windows子系统(WSL)中运行Selenium ChromeDriver的适配问题,咱们逐个击破:
1. 修复初始的Chrome崩溃错误(DevToolsActivePort)
你第一次碰到的WebDriverException核心原因有两个:
- WSL环境默认没有完整的图形界面支持,Chrome启动时需要的DevTools端口无法正常创建
- Linux环境下Chrome的沙箱机制在WSL里会触发权限限制
你添加的--no-sandbox是正确方向,但还需要补充适配WSL的关键参数,同时Selenium的参数用法也有更新。
2. 消除DeprecationWarning警告
你收到的DeprecationWarning: use options instead of chrome_options是因为Selenium 3.x之后的版本已经废弃了chrome_options参数,改用统一的options参数传递配置,这个改起来很简单。
3. 解决浏览器窗口不弹出的问题
你添加了--headless参数,这是Chrome的无头运行模式,本来就不会弹出可视化窗口。如果想要在WSL里看到浏览器窗口,得先配置Windows端的XServer,再调整代码参数。
最终可用的代码方案
方案A:无头模式(适合后台脚本运行,无需弹出窗口)
这个模式不需要配置图形界面,适合自动化脚本执行:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() # 适配WSL的核心参数 chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--disable-dev-shm-usage') # 解决WSL内存共享限制问题 chrome_options.add_argument('--headless=new') # 新版无头模式,比旧的--headless兼容性更好 chrome_options.add_argument('--disable-extensions') # 用options参数替代已废弃的chrome_options driver = webdriver.Chrome(options=chrome_options) driver.get('https://google.com') # 测试是否正常运行 print(driver.title) driver.quit()
方案B:弹出可视化窗口(需先配置XServer)
如果你想要看到浏览器窗口,按以下步骤操作:
- 在Windows端安装VcXsrv(可通过Windows应用商店或官网下载),启动时选择"Multiple windows",取消勾选"Native opengl",勾选"Disable access control"
- 在WSL的终端(或Jupyter的终端面板)中设置显示变量:
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0.0
- 修改Selenium代码,去掉
--headless参数:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--disable-dev-shm-usage') chrome_options.add_argument('--disable-extensions') driver = webdriver.Chrome(options=chrome_options) driver.get('https://google.com')
额外注意事项
- 务必保证ChromeDriver版本和Chrome/Chromium浏览器版本完全匹配,版本不匹配是很多启动错误的根源
- 如果WSL里装的是Chromium,可能需要手动指定ChromeDriver的路径,确保系统能找到它
- 建议先在WSL终端里单独测试Selenium代码,确认没问题后再放到Jupyter环境中运行
内容的提问来源于stack exchange,提问作者Louis Clisson
相关产品推荐
相关产品推荐

