背景:因MeterSphere目前后台调试使用的是自带的selenium-grid进行测试,且selenium-grid是固定版本的浏览器,所以无法做到多版本浏览器的兼容性测试,所以为了达到多版本浏览器兼容性测试的目的,需要部署安装多版本浏览器的node ,用于执行UI测试脚本
以chrome浏览器为例
操作步骤
1、因MeterSphere使用的是开源selenium-grid,其执行流程如下:
- 这个对外的入口对应的是 Selenium Hub;
- 具体执行任务的执行机,对应的是 Selenium Node;
- Node接到任务后分配给执行节点的过程,就是 Selenium Hub 将测试分配到 Selenium Node 执行的过程;
- Node向Hub报备的过程,就是 Selenium Node 向 Selenium Hub 注册的过程。
- 也就是说,Selenium Hub 用来管理各个 Selenium Node 的注册信息和状态信息,并且接收远程客户端代码的测试调用请求,并把请求命令转发给符合要求的 Selenium Node 执行。
selenium-grid包含了selenium-hub和多个selenium-node,所以需要额外安装多个版本的chrome浏览器的selenium-node,才可进行多版本浏览器兼容性测试
2、获取多版本的chrome 浏览器selenium-node
查看Releases · SeleniumHQ/docker-selenium · GitHub 网页上已经发布的release的镜像tag,下面的具体信息里面包含浏览器版本,找到你需要测试浏览器版本的镜像tag
复制tag信息,进服务器进行拉取镜像:
3、启动对应版本的chrome 浏览器selenium-node
执行命令:(启动5555为容器外部端口,chrome110为容器名称,用于区分)
#此为node节点单独运行,也可以加其他参数或者docker-compose的方式去启动,具体命令自行百度
docker run -d -p 5555:4444 --name chrome110 --shm-size="2g" selenium/standalone-chrome:4.8.0-20230210
执行如下:
4、MeterSphere配置个人信息的UI测试账号
点击“个人信息”
填写UI账号:
5、执行UI自动化场景
选择UI自动化场景,点击“本地调试”按钮
查看容器日志:
docker logs -f chrome110 --tail=200
可以看到浏览器版本为110,类型为chrome浏览器
6、查看执行结果
执行日志:
执行结果为:
以上就是添加额外浏览器进行测试的步骤,需要注意的是:
1、如果服务器不能直接连外网,则需要手动pull之后,save成tar包再上传到服务器
2、如果不在个人信息那里使用该访问的地址,也可以在系统参数设置下修改全局的selenium地址
3、如果你在个人信息里面看到"UI设置",请联系管理员进行授权
4、如果要部署多个版本的浏览器,请注意控制容器外部端口是否冲突,如有冲突,请修改为空闲端口