1. 环境准备搭建CentOS基础环境在开始安装Chrome和Chromedriver之前我们需要确保CentOS系统已经准备好基础环境。很多新手容易忽略这一步结果在后续安装过程中遇到各种依赖问题。我曾在多个项目中遇到过因为缺少基础依赖导致安装失败的情况所以特别强调这个环节的重要性。首先我们需要更新系统软件包到最新版本。打开终端执行以下命令sudo yum update -y这个命令会更新所有已安装的软件包。记得加上-y参数这样系统会自动确认所有提示避免安装过程中需要手动干预。更新完成后建议重启系统以确保所有更新生效。接下来我们需要安装一些必要的依赖库。Chrome浏览器和Chromedriver在运行时会依赖这些库sudo yum install -y wget unzip libX11 libXcursor libXdamage libXext libXfixes libXi libXrandr libXrender libXtst libXScrnSaver alsa-lib pango atk at-spi2-atk gtk3这些依赖库包含了图形界面支持、音频系统、字体渲染等基础功能。即使你的CentOS服务器没有图形界面这些库也是必需的因为Chrome在设计时就考虑了图形化环境的需求。2. 安装Google Chrome浏览器现在我们来安装Google Chrome浏览器。在Linux环境下安装Chrome有多种方法但最稳定可靠的方式是直接使用Google官方提供的RPM包。我测试过多种安装方式发现这种方法版本控制最清晰也最容易维护。首先下载最新的Chrome稳定版RPM包wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm下载完成后使用yum进行本地安装。这里有个小技巧使用localinstall而不是直接install因为前者会自动处理依赖关系sudo yum localinstall -y google-chrome-stable_current_x86_64.rpm安装完成后验证Chrome是否安装成功google-chrome --version这个命令会输出Chrome的版本号比如Google Chrome 115.0.5790.170。记下这个版本号因为接下来安装Chromedriver时需要匹配相同的版本。3. 安装匹配版本的ChromedriverChromedriver是Selenium控制Chrome浏览器的桥梁版本必须与Chrome浏览器严格匹配。这是自动化测试中最容易出问题的环节我见过太多因为版本不匹配导致的测试失败案例。首先访问Chromedriver的官方镜像站点查找对应版本 https://googlechromelabs.github.io/chrome-for-testing/#stable找到与你Chrome版本完全匹配的Chromedriver版本。如果找不到完全匹配的版本可以选择最接近的次版本。比如你的Chrome是115.0.5790.170可以选择115.0.5790开头的Chromedriver。下载对应的Chromedriver以115.0.5790.90为例wget https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/115.0.5790.90/linux64/chromedriver-linux64.zip解压下载的压缩包unzip chromedriver-linux64.zip将解压后的chromedriver移动到系统PATH包含的目录比如/usr/binsudo mv chromedriver /usr/bin最后给chromedriver添加可执行权限sudo chmod x /usr/bin/chromedriver4. 验证安装与常见问题解决安装完成后我们需要验证整个环境是否配置正确。这是很多教程会忽略的部分但却是确保后续自动化测试能顺利运行的关键步骤。首先验证Chromedriver是否能正常运行chromedriver --version这个命令应该输出Chromedriver的版本号且应该与你安装的Chrome浏览器版本匹配。接下来我们可以编写一个简单的Python脚本来测试Selenium是否能正常控制Chrome。创建一个test.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(optionsoptions) driver.get(https://www.google.com) print(driver.title) driver.quit()运行这个脚本python3 test.py如果一切正常你应该能看到输出Google。如果遇到问题以下是几个常见错误及解决方法Chromedriver版本不匹配确保Chromedriver版本与Chrome浏览器版本一致或接近。错误信息通常会明确指出版本不匹配。缺少依赖库如果报错提到缺少某些.so文件可能是缺少依赖库。可以尝试安装前面提到的所有依赖库。权限问题确保/usr/bin/chromedriver有可执行权限并且SELinux没有阻止其运行。内存不足在资源有限的服务器上可以添加--disable-dev-shm-usage参数来避免共享内存问题。5. 进阶配置与优化建议基础安装完成后我们可以进行一些进阶配置来优化自动化测试环境的性能和稳定性。这些技巧来自我在多个项目中的实战经验能显著提高测试效率和可靠性。无头模式优化在生产环境中我们通常使用无头模式运行Chrome。可以添加以下参数来优化性能options.add_argument(--headless) options.add_argument(--disable-gpu) options.add_argument(--window-size1920,1080)资源限制处理在资源有限的服务器上可以限制Chrome的内存和CPU使用options.add_argument(--disable-software-rasterizer) options.add_argument(--disable-extensions) options.add_argument(--disable-notifications)代理设置如果需要通过代理访问测试网站可以这样配置options.add_argument(--proxy-serverhttp://your-proxy:port)日志记录调试时可以启用Chromedriver的日志记录from selenium.webdriver.chrome.service import Service service Service(executable_path/usr/bin/chromedriver, service_args[--verbose, --log-pathchromedriver.log]) driver webdriver.Chrome(serviceservice, optionsoptions)版本管理建议在项目中固定Chrome和Chromedriver的版本避免自动更新导致的不兼容问题。可以在部署脚本中加入版本检查逻辑#!/bin/bash REQUIRED_CHROME_VERSION115.0.5790.170 CURRENT_CHROME_VERSION$(google-chrome --version | awk {print $3}) if [ $CURRENT_CHROME_VERSION ! $REQUIRED_CHROME_VERSION ]; then echo Chrome version mismatch. Expected $REQUIRED_CHROME_VERSION, found $CURRENT_CHROME_VERSION exit 1 fi6. 自动化部署脚本为了简化部署过程我们可以将上述所有步骤整合到一个自动化部署脚本中。这是我经过多次项目实践后总结出的最佳方案能大大减少手动操作和出错概率。创建一个install_chrome.sh文件内容如下#!/bin/bash # 更新系统 sudo yum update -y # 安装依赖 sudo yum install -y wget unzip libX11 libXcursor libXdamage libXext libXfixes libXi libXrandr libXrender libXtst libXScrnSaver alsa-lib pango atk at-spi2-atk gtk3 # 安装Chrome wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm sudo yum localinstall -y google-chrome-stable_current_x86_64.rpm CHROME_VERSION$(google-chrome --version | awk {print $3}) # 安装匹配的Chromedriver CHROMEDRIVER_VERSION$(echo $CHROME_VERSION | cut -d. -f1-3) wget https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/$CHROME_VERSION/linux64/chromedriver-linux64.zip -O chromedriver.zip unzip chromedriver.zip sudo mv chromedriver /usr/bin/ sudo chmod x /usr/bin/chromedriver # 验证安装 chromedriver --version给脚本添加执行权限并运行chmod x install_chrome.sh ./install_chrome.sh这个脚本会自动完成所有安装步骤包括版本匹配和权限设置。在实际项目中你可以根据需要调整版本控制逻辑或添加额外的配置步骤。7. 容器化部署方案对于需要频繁部署或隔离环境的场景我们可以考虑使用Docker容器化方案。这种方法能提供更好的环境隔离和可移植性也是现代DevOps实践中的推荐做法。创建一个Dockerfile文件内容如下FROM centos:7 # 安装基础依赖 RUN yum update -y \ yum install -y wget unzip libX11 libXcursor libXdamage libXext libXfixes libXi libXrandr libXrender libXtst libXScrnSaver alsa-lib pango atk at-spi2-atk gtk3 \ yum clean all # 安装Chrome RUN wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm \ yum localinstall -y google-chrome-stable_current_x86_64.rpm \ rm google-chrome-stable_current_x86_64.rpm # 安装匹配的Chromedriver RUN CHROME_VERSION$(google-chrome --version | awk {print $3}) \ wget https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/$CHROME_VERSION/linux64/chromedriver-linux64.zip -O chromedriver.zip \ unzip chromedriver.zip \ mv chromedriver /usr/bin/ \ chmod x /usr/bin/chromedriver \ rm chromedriver.zip # 安装Python和Selenium RUN yum install -y python3 python3-pip \ pip3 install selenium构建Docker镜像docker build -t selenium-chrome .运行容器docker run -it --rm selenium-chrome python3 -c from selenium import webdriver; driver webdriver.Chrome(); print(Selenium Chrome test successful); driver.quit()这种容器化方案特别适合CI/CD流水线可以确保每次测试都在完全一致的环境中运行避免了在我机器上能运行的问题。