Ubuntu环境Selenium启动Chrome未开无头模式却无UI显示问题求助
问题基础信息
- 测试框架:Selenium
- 浏览器版本:Chrome 103.0.5060.53
- 异常现象:Ubuntu环境下运行测试时Chrome UI无法正常显示,窗口对应区域卡顿,但浏览器进程处于活跃状态,测试代码可正常执行到全部检查点;相同代码在Windows、Mac系统运行无异常,配置未启用无头(headless)模式。
排查解决步骤
- 补全Chrome运行依赖
最小化安装的Ubuntu桌面、或Server版加装桌面环境时,经常缺失Chrome渲染必需的系统库,直接执行命令安装全量依赖:sudo apt update && sudo apt install -y libx11-xcb1 libxcomposite1 libxcursor1 libxdamage1 libxi6 libxtst6 libnss3 libcups2 libxss1 libxrandr2 libasound2 libpangocairo-1.0-0 libatk1.0-0 libcairo-gobject2 libgtk-3-0 libgdk-pixbuf2.0-0 - 修复远程连接X11转发配置
如果是通过SSH远程连接Ubuntu跑测试,首先确认SSH连接时加了X11转发参数:ssh -X 用户名@主机IP,同时检查Ubuntu端/etc/ssh/sshd_config配置项,确保X11Forwarding yes,修改后执行sudo systemctl restart sshd重启服务生效。 - 禁用Chrome硬件加速
Chrome 103版本和Ubuntu默认开源显卡驱动存在兼容问题,硬件加速进程崩溃时就会出现UI不渲染但浏览器内核正常运行的现象,给Selenium追加以下启动参数即可:# Python Selenium示例,其他语言调用ChromeOptions添加相同参数即可 from selenium.webdriver.chrome.options import Options chrome_opt = Options() chrome_opt.add_argument("--disable-gpu") chrome_opt.add_argument("--disable-software-rasterizer") chrome_opt.add_argument("--disable-features=VizDisplayCompositor") - 修复桌面会话权限问题
如果用sudo、或非桌面登录用户运行Selenium,会拿不到X11显示权限:- 终端执行
echo $DISPLAY确认环境变量,本地桌面运行正常值为:0,如果输出为空,执行export DISPLAY=:0手动指定 - 执行
xhost +放开当前X会话的访问权限(仅本地测试场景使用)
- 终端执行
- 清理残留进程
异常退出的Chrome、ChromeDriver进程会占用渲染锁,执行命令清理所有残留进程后重试:pkill -9 chrome pkill -9 chromedriver
内容的提问来源于stack exchange,提问作者8bitdefault
相关产品推荐
相关产品推荐

