在 Ubuntu 服务器上配置 Chrome 浏览器用于自动化测试(通常指 Selenium、Playwright 等),需要完成以下几个关键步骤:安装 Chrome、安装对应的 WebDriver、处理无头模式、以及解决常见的依赖问题。以下是详细指南:
✅ 一、安装 Google Chrome
方法 1:通过官方 APT 仓库(推荐)
# 添加 Google 的 GPG 密钥和仓库
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo gpg --dearmor -o /usr/share/keyrings/google-chrome.gpg
echo "deb [signed-by=/usr/share/keyrings/google-chrome.gpg] http://dl.google.com/linux/chrome/deb/ stable main" | sudo tee /etc/apt/sources.list.d/google-chrome.list
# 更新并安装
sudo apt update
sudo apt install google-chrome-stable
⚠️ 注意:如果
apt报错缺少依赖,可先运行:sudo apt install -f
方法 2:下载 .deb 包手动安装
从 Chrome 官网 下载 Linux 64 位 .deb 包,然后:
sudo dpkg -i google-chrome-stable_*.deb
sudo apt-get install -f # 修复依赖
✅ 二、安装 ChromeDriver
Chrome 版本需与 ChromeDriver 匹配。可通过以下方式获取:
方式 A:使用 Selenium Manager(Selenium 4.6+ 自动管理,推荐)
pip install selenium
Selenium 4.6+ 内置 Selenium Manager,会自动下载匹配的 chromedriver(无需手动操作)。
验证:
from selenium import webdriver driver = webdriver.Chrome() # 自动下载 chromedriver print(driver.capabilities['browserVersion'])
方式 B:手动下载并配置(适用于旧版或特殊需求)
- 查看当前 Chrome 版本:
google-chrome --version # 输出示例:Google Chrome 125.0.6422.76 - 访问 ChromeDriver 下载页 或 GitHub Release 页面,下载对应版本的
chromedriver-linux64.zip。 - 解压并移动到系统路径:
wget https://storage.googleapis.com/chrome-for-testing-public/125.0.6422.78/linux64/chromedriver-linux64.zip unzip chromedriver-linux64.zip sudo mv chromedriver-linux64/chromedriver /usr/local/bin/ chmod +x /usr/local/bin/chromedriver - 确保
chromedriver在PATH中:which chromedriver
✅ 三、配置无头模式(Headless Mode)
服务器环境通常无图形界面,需启用无头模式:
Python + Selenium 示例:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument("--headless=new") # 推荐使用 new headless mode
options.add_argument("--no-sandbox") # 避免 root 用户权限问题
options.add_argument("--disable-dev-shm-usage") # 防止共享内存不足
options.add_argument("--window-size=1920,1080")
options.add_argument("--disable-gpu") # 某些环境需禁用 GPU
driver = webdriver.Chrome(options=options)
driver.get("https://example.com")
print(driver.title)
driver.quit()
🔍 说明:
--headless=new是 Chrome 109+ 推荐的无头模式,比旧版更稳定。--no-sandbox和--disable-dev-shm-usage对 Docker 或 root 用户环境至关重要。
✅ 四、常见问题排查
| 问题 | 解决方案 |
|---|---|
Failed to load module: libnss3.so |
安装缺失依赖:sudo apt install libnss3 libatk1.0-0 libatk-bridge2.0-0 libcups2 libxkbcommon0 libxcomposite1 libxdamage1 libxrandr2 libgbm1 libpango-1.0-0 libcairo2 libatspi2.0-0 |
chrome not found |
检查路径:which google-chrome;确认未误装 Chromium |
SessionNotCreatedException |
版本不匹配 → 重新安装匹配的 ChromeDriver 或使用 Selenium Manager |
| 沙箱错误 | 添加 --no-sandbox 参数 |
| 内存不足 | 添加 --disable-dev-shm-usage 并使用 tmpfs 挂载 /dev/shm |
✅ 五、Docker 环境补充(如适用)
若在 Docker 中运行,可在 Dockerfile 中添加:
FROM python:3.11-slim
RUN apt-get update && apt-get install -y
wget
gnupg
ca-certificates
libnss3
libatk1.0-0
libatk-bridge2.0-0
libcups2
libxkbcommon0
libxcomposite1
libxdamage1
libxrandr2
libgbm1
libpango-1.0-0
libcairo2
libatspi2.0-0
chromium-browser
&& rm -rf /var/lib/apt/lists/*
# 安装 Chrome(可选,若用 Chromium 则注释下面几行)
# RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | gpg --dearmor -o /usr/share/keyrings/google-chrome.gpg
# RUN echo "deb [signed-by=/usr/share/keyrings/google-chrome.gpg] http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list
# RUN apt-get update && apt-get install -y google-chrome-stable
COPY . /app
WORKDIR /app
RUN pip install selenium
CMD ["python", "test.py"]
✅ 六、验证安装是否成功
运行以下脚本快速验证:
import subprocess
subprocess.run(["google-chrome", "--version"])
subprocess.run(["chromedriver", "--version"])
或在 Python 中:
from selenium import webdriver
driver = webdriver.Chrome()
print(f"Chrome version: {driver.capabilities['browserVersion']}")
driver.quit()
如需支持其他框架(如 Playwright、Puppeteer),也可类似配置——它们通常自带浏览器二进制或提供一键安装命令(如 playwright install chrome)。
需要我为你生成完整的 requirements.txt 或 Dockerfile 模板吗?
PHPWP博客