背景
团队里开始搞WEB的UI自动化测试相关内容,框架选型是JAVA+SELENIUM+CHROME+WEBDRIVER
本地编写代码,调试运行都OK,我们计划发布到CICD环境进行持续集成了
我们的CICD环境是搭建在云端docker中的一套Jenkins集群,包括了10个slave节点。
期间也遇到不少坑,记录下
坑1:
云端docker需要搭建测试环境,包括chrome浏览器和webdriver,都需要linux版本的,需要考虑到版本兼容性。我们也是找了很久下载资源
chrome浏览器的历史版本下载地址
https://www.chromedownloads.net/chrome64linux-stable/
webdriver的历史版本下载地址
http://chromedriver.storage.googleapis.com/index.html
我们最终使用的是81版本的浏览器和驱动,需要将浏览器和驱动下载到容器内,并安装、给予对应的权限,最终我更新了Jenkins-slave应用的dockerfile
坑2:
在云端docker中使用selenium driver驱动浏览器,需要指定驱动和浏览器位置
System.setProperty("webdriver.chrome.driver", "/usr/bin/chromedriver");
chromeOptions.setBinary("/usr/bin/google-chrome");
坑3:
解决selenium报错–unknown error: DevToolsActivePort file doesn‘t exist
需要在启动驱动时加上对应参数
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--headless");
chromeOptions.addArguments("--no-sandbox");
chromeOptions.addArguments("–-disable-gpu");
chromeOptions.addArguments("--disable-dev-shm-usage");
chromeOptions.setBinary("/usr/bin/google-chrome")
WebDriver driver = new ChromeDriver(chromeOptions);
坑4:
解决报错 chrome not reachable.
这个报错是在驱动启动正常,但是寻找chrome浏览器时遇到的报错。有很多情况都会导致该问题,比如
- 对应端口被占用
- 本地localhost配置写了172.0.0.1 localhost
我的情况是我在启动配置中多添加了一个“–remote-debugging-port=12582”,导致启动时会去指定端口号寻找,但是docker中启动chrome每次都是随机端口,导致无法找到chrome。
去除该启动参数后正常
坑5:
解决selenium报错–unknown error: DevToolsActivePort file doesn‘t exist
没错,我又遇到了这个报错
原因是,我在为了解决上述问题时,百度到了很多其他启动参数项,为了调试我都给加上了,导致出现了部分参数不支持的报错,我把一些七七八八的参数都给去除了,只保留了必须的,结果就OK了。
最终我的启动参数配置是:
System.setProperty("webdriver.chrome.driver", "/usr/bin/chromedriver");
System.setProperty("webdriver.chrome.whitelistedIps", "");
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--headless");
chromeOptions.addArguments("--no-sandbox");
chromeOptions.addArguments("–-disable-gpu");
chromeOptions.addArguments("--disable-dev-shm-usage");
chromeOptions.addArguments("--window-size=1024,768");
chromeOptions.setBinary("/usr/bin/google-chrome"); //chrome binary location specified here
WebDriver driver = new ChromeDriver(chromeOptions);
chrome所有配置项的解释和含义,可以看这篇文章https://blog.csdn.net/bigcarp/article/details/121142873文章来源:https://www.toymoban.com/news/detail-558419.html
总结:
1、添加需要的配置
2、不要添加多余的配置😂
3、仔细查看报错文章来源地址https://www.toymoban.com/news/detail-558419.html
到了这里,关于Selenium+docker 环境部署(报错异常踩坑记)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!