在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原生无头模式。
CLOUD技术笔记