Ubuntu服务器如何配置Chrome浏览器用于自动化测试?

在 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:手动下载并配置(适用于旧版或特殊需求)

  1. 查看当前 Chrome 版本:
    google-chrome --version
    # 输出示例:Google Chrome 125.0.6422.76
  2. 访问 ChromeDriver 下载页 或 GitHub Release 页面,下载对应版本的 chromedriver-linux64.zip。
  3. 解压并移动到系统路径:
    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
  4. 确保 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 模板吗?