文本主要参考文章:Docker-Jenkins+Selenium+Chrome环境搭建_jenkins容器上 chromedriver放哪里-CSDN博客
1、下载chrome浏览器安装包
下载地址:Google Chrome 网络浏览器
拖拉浏览器至最底部-选择其他平台
选择Linux进行下载
将下载的google-chrome-stable_current_amd64.deb文件上传至linux服务器。并运用docker cp命令将该文件复制到/var/jenkins_home目录
chrome文件赋值权限
chmod +x google-chrome-stable_current_amd64.deb
安装chrome
dpkg -i google-chrome-stable_current_amd64.deb
安装报错
google-chrome-stable depends on libxfixes3; however:
Package libxfixes3 is not installed.
google-chrome-stable depends on libxkbcommon0 (>= 0.4.1); however:
Package libxkbcommon0 is not installed.
google-chrome-stable depends on libxrandr2; however:
Package libxrandr2 is not installed.
google-chrome-stable depends on xdg-utils (>= 1.0.2); however:
Package xdg-utils is not installed.
dpkg: error processing package google-chrome-stable (--install):
dependency problems - leaving unconfigured
Errors were encountered while processing:
google-chrome-stable
安装多余依赖
这个时候我们需要安装多余依赖包
sudo apt-get -f install
重新安装
重新安装 这次我们用sudo安装
sudo dpkg -i google-chrome-stable_current_amd64.deb
安装成功,查看google-chrome版本
google-chrome --version
2、更新chrome版本
因为chrome需要配合chromedriver使用,所以需要保证chrome和chromedriver版本号一致,由上步骤安装的chrome可能无法找到合适的chromedrive版本,由此需要更新chrome版本。
chrome版本下载地址:http://dist.control.lth.se/public/CentOS-7/x86_64/google.x86_64/
chromedrive版本下载地址:https://chromedriver.chromium.org/downloads
我下载使用的版本为:102.0.5005.115
同样将下载的chrome:google-chrome-beta-103.0.5060.24-1.x86_64.rpm文件和chromedrive:chromedriver_linux64.zip上传至linux服务器
使用docker cp 当前存放文件路径 容器id:存放文件的容器路径,复制到容器中
docker /upfile/chrome 19ad147df28c:/var/upfile
将rpm安装包转换为debg格式使用命令alien命令:alien -d rpm包名称
alien命令安装步骤参考链接:Linux软件包转换-deb与rpm互转_deb2rpm-CSDN博客
alien -d google-chrome-stable-102.0.5005.115-1.x86_64.rpm
执行结果如下:
将google-chrome-stable_102.0.5005.115-2_amd64.deb移动至/var/jenkins_home目录,
名字重命名为google-chrome-stable_102_amd64.deb
执行如下代码更新chrome版本
sudo dpkg -i google-chrome-stable_102_amd64.deb
执行结果如下,执行google-chrome --version 查看chrome版本
3、安装chromedriver
将上面上传到docker容器中得chromedriver_linux64.zip使用unzip chromedriver_linux64.zip进行解压
设置权限
chmod +x chromedriver
将驱动放到bin目录下
mv chromedriver /usr/bin/
cp /usr/bin/chromedriver /usr/local/bin/
权限不足重新赋值
这个我上网查资料发现是权限不足,所以重新给他赋值权限
进入/usr/bin 目录重新给google-chrome赋值
chmod 777 google-chrome
配置驱动环境变量
找出驱动位置
which chromedriver
然后vim /etc/profile
#chromedriver
export PATH=$PATH:/usr/local/bin/chromedriver
添加完成之后保存
source /etc/profile
接下来就可以尝试在容器中运行自动化测试脚本
4、常见报错
解决方案:在初始化driver时加入如下参数
chrome_options = Options()
chrome_options.add_argument('--headless') # 浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败
chrome_options.add_argument('--no-sandbox') # 解决DevToolsActivePort文件不存在的报错
chrome_options.add_argument('--disable-dev-shm-usage') # 大量渲染时候写入/tmp而非/dev/shm
chrome_options.add_argument('--disable-gpu') # 谷歌文档提到需要加上这个属性来规避bug
chrome_options.add_argument('-–single-process') #以单进程模式运行 Chromium。(启动时浏览器会给出不安全警告)
chrome_options.add_argument('window-size=1920x1080') # 指定浏览器分辨率
chrome_options.add_argument('--start-maximized') # 最大化运行(全屏窗口),不设置,取元素会报错
chrome_options.add_argument('--user-data-dir=/home/jenkins/data')
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option('useAutomationExtension', False)
self.driver = webdriver.Chrome(options=chrome_options, executable_path='/usr/bin/chromedriver')
chrome_options.add_argument('--user-data-dir=/home/jenkins/data')
并在容器中手动创建目录/home/jenkins/data,并将权限修改为777
chmod -R 777 /home/jenkins/data