WSL2中使用Python undetected-chromedriver及Chrome启动卡顿问题求助
解决WSL2中Chrome/ChromeDriver启动卡顿且无法显示UI的问题
1. 确认WSL2的X11转发配置
- 先检查DISPLAY环境变量是否正确,在WSL2终端执行:
正常应输出类似echo $DISPLAYlocalhost:0或对应Windows IP的192.168.x.x:0。若输出异常,手动设置:
可将上述两行添加到export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0 export LIBGL_ALWAYS_INDIRECT=1~/.bashrc或~/.zshrc,避免每次重启重复配置。
2. 启动Chrome时添加必要参数
WSL2的环境限制需要给Chrome加特定参数才能正常运行,执行:
google-chrome --no-sandbox --disable-gpu --disable-software-rasterizer --display=$DISPLAY
--no-sandbox:规避WSL2用户命名空间限制,是运行Chrome的必要参数--disable-gpu/--disable-software-rasterizer:禁用GPU相关特性,避免WSL2中GPU适配问题导致的卡顿
3. 修复并配置undetected-chromedriver
注意代码中导入包的语法错误(应为下划线而非连字符),同时添加适配WSL2的启动参数:
import os import undetected_chromedriver as uc from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--disable-gpu') chrome_options.add_argument('--disable-software-rasterizer') chrome_options.add_argument(f'display={os.environ.get("DISPLAY")}') # 若Chrome不在默认路径,需指定binary_location # chrome_options.binary_location = '/usr/bin/google-chrome' driver = uc.Chrome(options=chrome_options)
4. 验证Chrome与ChromeDriver版本匹配
执行以下命令确认版本完全一致:
google-chrome --version chromedriver --version
版本不匹配会直接导致启动异常或卡顿,需重新安装对应版本的ChromeDriver。
内容的提问来源于stack exchange,提问作者andythsu
相关产品推荐
相关产品推荐

