WSL 2(Kali)环境下Selenium运行时浏览器无加载、代码阻塞问题
解决步骤
核心启动参数补全
WSL2环境下Chrome默认启动参数会触发渲染阻塞,必须手动加以下配置;同时你原脚本导入了Options模块但未实际传入参数,属于无效导入。
--no-sandbox:Kali权限配置下不加此参数会导致Chrome进程无响应--disable-gpu:WSL2虚拟显卡驱动对Chrome硬件加速支持不完善,开启会导致页面渲染卡死--disable-dev-shm-usage:WSL2默认/dev/shm分区容量过小,会导致Chrome临时文件写入失败
不加上述参数时,Chrome进程会在启动后挂起,driver.get()等后续命令会永久阻塞,完全匹配你遇到的“窗口弹出但无加载、后续代码不执行”的现象。
版本匹配检查
执行以下命令确认版本一致性:
- 查看Chrome版本:
google-chrome --version - 查看Chromedriver版本:
chromedriver --version
两者主版本号必须完全一致,否则会出现无报错但页面永久加载的问题。如果版本不匹配,要么卸载手动安装的Chromedriver,使用Selenium 4.6+自带的驱动自动匹配功能,要么手动下载对应版本替换原有驱动。
无关组件清理
你当前终端可直接启动可视化Chrome,说明WSL2已配置好WSLg或第三方X服务,无需使用pyvirtualdisplay虚拟显示层,直接删除脚本中该模块的相关导入即可,避免虚拟显示与真实图形环境冲突。
修改后可用测试脚本
from selenium import webdriver from selenium.webdriver.chrome.options import Options print('starting') chrome_options = Options() # 必加参数 chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--disable-gpu') chrome_options.add_argument('--disable-dev-shm-usage') # 若配置过系统代理但无需给Chrome用,加下面这行 # chrome_options.add_argument('--no-proxy-server') driver = webdriver.Chrome(options=chrome_options) driver.get('https://www.google.com') print('Worked') driver.close()
内容的提问来源于stack exchange,提问作者Trevor Kern
相关产品推荐
相关产品推荐

