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

在Ubuntu服务器上配置Chrome浏览器用于自动化测试,以下是完整的配置步骤:

1. 安装Chrome浏览器

# 更新系统包
sudo apt update

# 安装依赖
sudo apt install -y wget unzip

# 下载并安装Chrome
wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
sudo apt update
sudo apt install -y google-chrome-stable

# 验证安装
google-chrome --version

2. 安装ChromeDriver

方法一:使用WebDriver Manager(推荐)

# 安装Python和pip
sudo apt install -y python3 python3-pip

# 安装webdriver-manager
pip3 install webdriver-manager

方法二:手动安装

# 获取Chrome版本
CHROME_VERSION=$(google-chrome --version | awk '{print $3}' | cut -d'.' -f1)

# 下载对应版本的ChromeDriver
wget -N https://chromedriver.storage.googleapis.com/LATEST_RELEASE_${CHROME_VERSION} -O /tmp/chromedriver_version.txt
CHROMEDRIVER_VERSION=$(cat /tmp/chromedriver_version.txt)
wget -N https://chromedriver.storage.googleapis.com/${CHROMEDRIVER_VERSION}/chromedriver_linux64.zip -P /tmp/

# 解压并安装
unzip -o /tmp/chromedriver_linux64.zip -d /tmp/
sudo mv /tmp/chromedriver /usr/local/bin/
sudo chmod +x /usr/local/bin/chromedriver

# 验证安装
chromedriver --version

3. 安装必要的依赖

# 安装Xvfb(无头模式运行需要)
sudo apt install -y xvfb

# 安装字体(避免字体缺失问题)
sudo apt install -y fonts-liberation fonts-noto-cjk

# 安装其他依赖
sudo apt install -y libxss1 libappindicator1 libindicator7 libasound2 libnspr4 libnss3 libgconf-2-4

4. 配置无头模式运行

使用Xvfb(传统方式):

# 启动Xvfb
Xvfb :99 -screen 0 1920x1080x24 &
export DISPLAY=:99

使用Chrome的无头模式(Chrome 59+):

Chrome原生支持无头模式,无需Xvfb。

5. Python示例代码

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

# 配置Chrome选项
chrome_options = Options()

# 无头模式配置
chrome_options.add_argument('--headless')  # 启用无头模式
chrome_options.add_argument('--no-sandbox')  # 必须参数,在root用户下运行需要
chrome_options.add_argument('--disable-dev-shm-usage')  # 避免共享内存问题
chrome_options.add_argument('--disable-gpu')  # 禁用GPU提速
chrome_options.add_argument('--window-size=1920,1080')  # 设置窗口大小

# 其他优化参数
chrome_options.add_argument('--disable-extensions')
chrome_options.add_argument('--disable-infobars')
chrome_options.add_argument('--disable-notifications')
chrome_options.add_argument('--disable-browser-side-navigation')
chrome_options.add_argument('--disable-features=VizDisplayCompositor')

# 初始化WebDriver
driver = webdriver.Chrome(
    service=Service(ChromeDriverManager().install()),
    options=chrome_options
)

# 使用示例
try:
    driver.get("https://www.example.com")
    print("页面标题:", driver.title)
    # 截图保存
    driver.save_screenshot('screenshot.png')
finally:
    driver.quit()

6. Docker方式部署(推荐)

创建Dockerfile:

FROM ubuntu:22.04

# 安装依赖
RUN apt-get update && apt-get install -y 
    wget 
    unzip 
    curl 
    gnupg 
    python3 
    python3-pip 
    xvfb 
    fonts-liberation 
    libxss1 
    libappindicator1 
    libindicator7 
    libasound2 
    libnspr4 
    libnss3 
    libgconf-2-4 
    && rm -rf /var/lib/apt/lists/*

# 安装Chrome
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - 
    && echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list 
    && apt-get update 
    && apt-get install -y google-chrome-stable

# 安装Python依赖
RUN pip3 install selenium webdriver-manager

WORKDIR /app
COPY test_script.py .

CMD ["python3", "test_script.py"]

7. 常见问题解决

权限问题:

# 如果使用root用户,需要添加--no-sandbox参数
chrome_options.add_argument('--no-sandbox')

内存问题:

# 在docker或资源受限环境中
chrome_options.add_argument('--disable-dev-shm-usage')

字体问题:

# 安装中文字体
sudo apt install -y fonts-wqy-zenhei fonts-wqy-microhei

8. 验证配置

创建测试脚本:

# test_chrome.py
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')

driver = webdriver.Chrome(options=options)
driver.get("https://www.google.com")
print("Chrome配置成功!页面标题:", driver.title)
driver.quit()

运行测试:

python3 test_chrome.py

这样配置后,你的Ubuntu服务器就可以用于Chrome自动化测试了。根据具体需求,可以选择使用Xvfb或Chrome原生无头模式。

云服务器