Selenium+docker 环境部署(报错异常踩坑记)

背景

团队里开始搞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

总结:

1、添加需要的配置
2、不要添加多余的配置😂
3、仔细查看报错

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker是一个开源的容器化平台,可以实现轻量级、可移植和自足的容器化应用程序的创建、部署和运行。通过使用Docker,可以将应用程序及其依赖项打包成一个容器,以简化应用程序的部署和管理过程。 Selenium是一个用于自动化Web浏览器操作的工具。它可以模拟用户在浏览器中的操作,如点击、输入文本、提交表单等。Selenium可以对Web应用程序进行自动化测试,并提供多种编程语言的支持。 Pytest是一个Python编程语言中的测试框架,用于编写和执行单元测试。它提供了丰富的断言库、执行测试的灵活控制,以及丰富的插件机制,使得测试编写和运行过程更加简单和高效。 结合使用DockerSelenium和Pytest可以实现自动化Web应用程序的测试和部署。通过将Selenium和Pytest集成在Docker容器中,可以创建一个独立的测试环境,无需在本地安装和配置相关的软件和依赖项。这样可以简化测试环境的搭建过程,并保持测试环境的一致性。 使用Docker容器中的Selenium和Pytest,可以编写自动化测试脚本,并在测试容器中运行。测试脚本可以使用Selenium模拟用户在Web应用程序中的操作,并使用Pytest进行断言和结果判断。通过使用Docker容器,测试可以在不同的环境中运行,确保测试的可移植性和一致性。 总结来说,DockerSelenium和Pytest联合使用可以实现自动化测试环境的快速搭建,提高测试效率和可移植性。这种集成可以帮助开发人员和测试人员更好地开发和测试Web应用程序,并简化部署和管理过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值