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

这篇具有很好参考价值的文章主要介绍了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、仔细查看报错文章来源地址https://www.toymoban.com/news/detail-558419.html

到了这里,关于Selenium+docker 环境部署(报错异常踩坑记)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Web自动化测试-【Selenium环境部署Edge】

    之前写过一篇关于自动化测试的博客,里面是有的chrome驱动,由于不适配缘故,更新以下Edge驱动。 自动化测试 准备 Edge 浏览器 准备 Edge 驱动包 a .查看自己的Edge浏览器版本(浏览器版本和驱动版本一定要对应) b .下载对应的驱动包,下载路径:https://www.selenium.dev/documentat

    2024年02月16日
    浏览(42)
  • 构建自动化测试环境:使用Docker和Selenium!

    随着软件开发的日益复杂和迭代速度的加快,自动化测试被越来越广泛地应用于软件开发流程中。它能够提高测试效率、减少测试成本,并保证软件质量的稳定性。在构建自动化测试环境方面,Docker 和 Selenium 是两个非常有用的工具。下面将介绍如何使用 Docker 和 Selenium 构建

    2024年02月03日
    浏览(30)
  • 使用Docker和Selenium构建自动化测试环境

    随着软件开发的日益复杂和迭代速度的加快,自动化测试被越来越广泛地应用于软件开发流程中。它能够提高测试效率、减少测试成本,并保证软件质量的稳定性。在构建自动化测试环境方面,Docker 和 Selenium 是两个非常有用的工具。下面将介绍如何使用 Docker 和 Selenium 构建

    2024年02月04日
    浏览(41)
  • python+selenium+docker+飞书机器人部署自动预约程序

    笔者最近需要重复使用一个预约程序,就想实现自动化预约,本以为是一个简单的项目,但从编写到部署还是兜兜转转了好久,写文章记录一下,也分享一下遇到的问题方便读者更快的搭建 selenium是一个web模拟应用,可以模仿用户在浏览器中的行为 在一开始测试的时候,是在

    2023年04月19日
    浏览(58)
  • 基于docker部署的Selenium Grid分布式自动化测试

    Selenium Grid是Selenium套件的一部分,它专门用于并行运行多个测试用例在不同的浏览器、操作系统和机器上。 Selenium Grid有两个版本——老版本Grid 1和新版本Grid 2。我们只对新版本做介绍,因为Selenium团队已经逐渐遗弃老版本了。 Selenium Grid 主要使用 master-slaves (or hub-nodes) 理念

    2024年02月13日
    浏览(33)
  • 使用Docker搭建开发环境:MySQL、Redis、MongoDB和Selenium Grid

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何支持Docker的平台上。在本篇博客中,我们将详细介绍如何用Docker安装MySQL、Redis、MongoDB和Selenium Grid,并给出相应的代码案例。 在开始之前,确保您的系统上安

    2024年02月19日
    浏览(41)
  • Jenkins部署Python报错 - selenium.common.exceptions.WebDriverException: Message: ‘chromedriver‘ executabl

    订阅 Python全栈白宝书-零基础入门篇 可报销! 白嫖入口-请点击我。 推荐他人订阅,可获取扣除平台费用后的35%收益,文末名片加V! 说明:该文属于 Python全栈白宝书专栏, 免费阶段订阅数量4300+ , 购买任意白宝书体系化专栏可加入 TFS-CLUB 私域社区。 福利:加入社区的小伙

    2023年04月14日
    浏览(56)
  • docker环境下mongo副本集的部署及异常修复

    最近更换了办公地点。部署在本地docker环境里的mongo数据库不能使用了。原因是本地的ip地址变更。以前的mongo副本集的配置需要更新。处理完后,索性重新记录一下mongo副本集在docker中的部署流程。 我们先了解一下什么是事务,事务是一组对数据库执行的操作,这些操作作为

    2024年01月18日
    浏览(54)
  • 安装 opendr 踩坑记

    复现早期的优化算法需要用到opendr,踩坑一天记录!!! python 3.8.15 numpy=1.23.0 mayavi=4.8.1 chumpy=0.70 cpython=3.0.0 安装opendr命令1:安装的版本是0.78 截止目前我还找不到答案! 安装opendr命令2 参考链接中的手动安装,安装的是opendr版本是0.77 安装opendr命令3 报错依旧 我这个环境是重

    2024年02月14日
    浏览(42)
  • Flutter踩坑记之二

    今天又踩了两个坑 一个新项目,前段时间一直是在Android环境下测试,这几天准备发布ios的测试版本,结果遇到了两个坑 坑一、pod install时,下载插件错误 提示连接github.com的443端口失败 由于MacOs通过代理服务器上网,网页能正常访问到资源,但git下载的时候一直失败,切换到

    2024年01月25日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包