seleniumbase学习总结5 - docker-compose集成部署执行环境
文章目录
- 1、如何使用 docker-compose 部署 selenium grid
- 1.1 配置容器的常用参数
- 1.2 如何快速开始部署一个火狐浏览器容器?
- 1.3 如何访问容器内部?
- 1.3.1 第一种:通过 VNC 客户端访问
- 1.3.2 第二种:通过 浏览器 访问容器
- 1.4 集线器(hub)和 节点(node)
- 1.4.1 node 跟 hub 在一台linux上
- 1、单独部署
- 2、docker-compose 集成部署
- 1.4.2 node 在其他linux上
1、如何使用 docker-compose 部署 selenium grid
产品文档 - SeleniumHQ / docker-selenium
https://github.com/SeleniumHQ/docker-selenium
产品文档 - Selenium Grid 4
https://www.selenium.dev/documentation/grid/
产品文档 - selenium
https://www.selenium.dev/documentation/
1.1 配置容器的常用参数
- –scale chrome=num
docker-compose up -d --scale chrome=num //num是要启动节点的数量,chrome是docker-compose文件中节点的名称
- VNC_NO_PASSWORD=1
没有密码验证的情况下运行 VNC
- VNC_VIEW_ONLY=1
仅查看模式下运行 VNC
- -e SE_EVENT_BUS_HOST= < event_bus_ip | event_bus_name >
- -e SE_EVENT_BUS_PUBLISH_PORT=4442
- -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443
节点配置选项: 告诉节点事件总线在哪里,以便它可以注册自己。
- -e SE_NODE_MAX_SESSIONS=10
增加每个容器的会话并发性
- –shm-size=“2g”
来使用主机的共享内存,防止容器崩溃,这是避免浏览器在 docker 容器内崩溃的已知解决方法,这里是 Chrome和Firefox的记录问题。2gb 的 shm 大小是任意的,但已知效果很好,您的特定用例可能需要不同的值,建议根据您的需要调整此值。
- -v /home/ubuntu/files:/home/seluser/files
注意:mkdir /home/ubuntu/files
chown 1200:1201 /home/ubuntu/files
挂载数据卷前操作
- -e SE_OPTS= “–log-level FINE”
可以通过将环境变量传递给容器来增加日志输出
- docker logs -f <容器 ID | 容器名称>
所有输出都发送到标准输出,因此可以通过运行检查
- -e JAVA_OPTS=-Xmx512m
告诉节点事件总线在哪里,以便它可以注册自己。
- -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443
- -e SCREEN_WIDTH=1366
- -e SCREEN_HEIGHT=768
- -e SCREEN_DEPTH=24
- -e SCREEN_DPI=74
设置屏幕分辨率
- -e SE_NODE_SESSION_TIMEOUT
网格 URL 和会话超时,默认300秒
- -e E_SESSION_REQUEST_TIMEOUT=500
超时为 500 秒
- -e SE_SESSION_RETRY_INTERVAL=2
重试间隔为 2 秒
- -e SE_NODE_OVERRIDE_MAX_SESSIONS true
启用视频录制
- -e START_XVFB=false
以无头模式运行,默认是true
1.2 如何快速开始部署一个火狐浏览器容器?
- docker run -d -p 4444:4444 -p 7900:7900 --shm-size=2g selenium/standalone-firefox:4.1.2-20220131
- 查看部署的火狐浏览器:http://ip:4444
- 查看容器内发生的情况:http://ip:7900,密码:secret
1.3 如何访问容器内部?
1.3.1 第一种:通过 VNC 客户端访问
docker-selenium 项目使用的是 x11vnc 作为 VNC 服务器
VNC (Virtual Network Console) 是虚拟网络控制台的缩写。它 是一款优秀的远程控制工具软件,由著名的 AT&T 的欧洲研究实验室开发的。
VNC 是在基于 UNIX 和 Linux 操作系统的免费的开源软件,远程控制能力强大,高效实用,其性能可以和 Windows 和 MAC 中的任何远程控制软件媲美。x11vnc 允许人们使用任何VNC 查看器远程查看并与真实的X 显示器(即对应于物理监视器、键盘和鼠标的显示器)进行交互。通过这种方式,它扮演了 WinVNC 为 Windows 扮演的角色,适用于 Unix/X11
在 Linux 中,VNC 包括以下四个命令:vncserver,vncviewer,vncpasswd,和 vncconnect。
我们这里使用了其中的两个命令:vncserver【容器里面使用的是这个】 和 vncviewer【VNC客户端】。
- 下载VNC客户端:https://www.realvnc.com/de/connect/download/viewer/
- VNC 客户端访问容器内部,默认端口是: 5900
- 启动容器[启动一个后,再启动就会显示4444端口占用]:
谷歌:docker run -d -p 4444:4444 -p 5900:5900 --shm-size=2g selenium/standalone-chrome:4.1.2-20220131
火狐:docker run -d -p 4444:4444 -p 5902:5900 --shm-size=2g selenium/standalone-firefox:4.1.2-20220131
edge:docker run -d -p 4444:4444 -p 5901:5900 --shm-size=2g selenium/standalone-edge:4.1.2-20220131
- 输入 xxx.xxx.xxx.xxx : 5900 ,直接enter,输入密码:secret
1.3.2 第二种:通过 浏览器 访问容器
浏览器访问容器内部,原理是通过: noVNC
noVNC 既是 HTML VNC 客户端 JavaScript 库,又是构建在该库之上的应用程序,可以用来访问容器内部,默认端口是7900
noVNC 在任何现代浏览器中都能很好地运行,包括移动浏览器(iOS 和 Android)
- 启动所需浏览器的容器
docker run -d -p 4444:4444 -p 7900:7900 --shm-size=“2g” selenium/standalone-chrome:4.1.2-20220131
docker run -d -p 4444:4444 -p 7901:7900 --shm-size=“2g” selenium/standalone-edge:4.1.2-20220131
docker run -d -p 4444:4444 -p 7902:7900 --shm-size=“2g” selenium/standalone-firefox:4.1.2-20220131
- 浏览器查看容器内部
http://localhost:7900/ 连接到 Chrome 容器
http://localhost:7901/ 连接到 the Edge 容器
http://localhost:7902/ 连接到 the Firefox 容器
1.4 集线器(hub)和 节点(node)
1.4.1 node 跟 hub 在一台linux上
1、单独部署
1、创建docker网络:docker network create grid
2、创建hub集线器:docker run -d -p 4442-4444:4442-4444 --net grid --name selenium-hub selenium/hub:4.1.2-20220131
3、创建node节点1:docker run -d --net grid -e SE_EVENT_BUS_HOST =selenium-hub --shm-size=2g -e SE_EVENT_BUS_PUBLISH_PORT=4442 -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 selenium/node-chrome:4.1.2-20220131
4、创建node节点2:docker run -d --net grid -e SE_EVENT_BUS_HOST =selenium-hub --shm-size=2g -e SE_EVENT_BUS_PUBLISH_PORT=4442 -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 selenium/node-edge:4.1.2-20220131
5、创建node节点3:docker run -d --net grid -e SE_EVENT_BUS_HOST =selenium-hub --shm-size=2g -e SE_EVENT_BUS_PUBLISH_PORT=4442 -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 selenium/node-firefox:4.1.2-20220131
6、使用完成后,删除容器:docker rm 容器id,删除网格:docker network rm grid
2、docker-compose 集成部署
- 创建 docker-compose-seleniumgrid.yml 文件
version: "3"
services:chrome:image: selenium/node-chrome:4.1.2-20220208shm_size: 2gbdepends_on:- selenium-hubports:- "7901:7900"environment:- SE_EVENT_BUS_HOST=selenium-hub- SE_EVENT_BUS_PUBLISH_PORT=4442- SE_EVENT_BUS_SUBSCRIBE_PORT=4443- SE_NODE_SESSION_TIMEOUT=350- SE_NODE_MAX_SESSIONS=10edge:image: selenium/node-edge:4.1.2-20220208shm_size: 2gbdepends_on:- selenium-hubports:- "7902:7900"environment:- SE_EVENT_BUS_HOST=selenium-hub- SE_EVENT_BUS_PUBLISH_PORT=4442- SE_EVENT_BUS_SUBSCRIBE_PORT=4443- SE_NODE_SESSION_TIMEOUT=350- SE_NODE_MAX_SESSIONS=5firefox:image: selenium/node-firefox:4.1.2-20220208shm_size: 2gbdepends_on:- selenium-hubports:- "7903:7900"environment:- SE_EVENT_BUS_HOST=selenium-hub- SE_EVENT_BUS_PUBLISH_PORT=4442- SE_EVENT_BUS_SUBSCRIBE_PORT=4443- SE_NODE_SESSION_TIMEOUT=350- SE_NODE_MAX_SESSIONS=8selenium-hub:image: selenium/hub:4.1.2-20220208container_name: selenium-hubports:- "4442:4442"- "4443:4443"- "4444:4444"
- 启动容器:docker-compose -f docker-compose-seleniumgrid.yml up -d
-f:指定yml文件
up:启动容器
-d:后台启动
- 使用谷歌浏览器运行脚本:pytest test_专家管理.py::ExpertManage::test_003 --server=ip --port=4444 --locale=zh_cn -n=3
[默认使用谷歌]
- 或者使用火狐浏览器:pytest test_专家管理.py::ExpertManage::test_003 --server=ip --port=4444 --locale=zh_cn -n=3 --browser=firefox
–server=ip --port=4444:部署 selenium grid 的ip
–locale=zh_cn:启动的浏览器默认是中文语言
-n = 3:分布式运行用例
- 停止容器:docker-compose -f docker-compose-v3.yml down
- 访问上面三个容器:
谷歌:http://ip:7901
edge:http://ip:7902
火狐:http://ip:7903
1.4.2 node 在其他linux上
- 虚拟机1启动hub集线器:
docker run -d -p 4442-4444:4442-4444 --name selenium-hub selenium/hub:4.1.2-20220131
- 虚拟机2启动node节点:
docker run -d -p 5555:5555 --shm-size=2g -e SE_EVENT_BUS_HOST=机器1IP -e SE_EVENT_BUS_PUBLISH_PORT=4442 -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 -e SE_NODE_HOST=机器2IP selenium/node-chrome:4.1.2-20220131
- 虚拟机3启动node节点:
docker run -d -p 5555:5555 --shm-size=2g -e SE_EVENT_BUS_HOST=机器1IP -e SE_EVENT_BUS_PUBLISH_PORT=4442 -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 -e SE_NODE_HOST =机器3IP selenium/node-edge:4.1.2-20220131
- 虚拟机4启动node节点:
docker run -d -p 5555:5555 --shm-size=2g -e SE_EVENT_BUS_HOST=机器1IP -e SE_EVENT_BUS_PUBLISH_PORT=4442 -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 -e SE_NODE_HOST =机器4IP selenium/node-firefox:4.1.2-20220131
seleniumbase学习总结5 - docker-compose集成部署执行环境相关推荐
- Docker Compose搭建consul群集环境(了解Docker Compose及常用命令,Docker四种网络,Doker指定端口)
文章目录 Docker Compose搭建consul群集环境 认识Docker Compose IConsul Docker Compose容器编排 Dasker Compose配置常用字段 Bos ...
- Docker——compose简述部署
前言 Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置: ●支持健康检查,允许存储键值对: ●基于Golong语言,可移植性强: ●支持ACL访问控制: 与Doc ...
- react不同环境不同配置angular_DevOps 前端项目(angular、vue、react)打包静态资源生成一份Docker镜像支持部署不同环境...
1.前言 为了尽可能地轻量化前端镜像(非node承载),将前端编译成静态资源通过nginx承载. 与后端程序不同的是,当使用静态资源方式时页面是直接加载到浏览器进行渲染,无法读取服务端机器中 env ...
- docker compose java_Docker-compose部署java项目
Docker-compose部署java项目 前置条件: 安装docker 安装docker-compose 防火墙啥的都设置好 dockerfile-demo FROM java:8 VOLUME ...
- MySQL NDB Cluster使用docker compose一键部署
本文主要用来学习MySQL NDB Cluster 解决学习过程中的痛点:需要开启N台VMware虚拟机,电脑不堪重负 使用docker部署,完美解决 本文使用的docker image: mysql ...
- docker使用docker compose file部署项目时,实现容器卷挂载,并对容器内文件夹赋予权限
为了能使容器内的SpringBoot项目的日志方便查看,我想用容器卷挂载的方式,将容器内生成的日志文件挂载到服务器上,实现同步,即使生成了新的镜像,依赖于compose file的配置,也能使日志在服 ...
- docker compose mysql_docker-compose部署MySQL
第一步.安装docker: [root@localhost ~]# yum install docker 第二步.配置docker-compose.yml文件 ①在根目录下创建docker-compo ...
- jenkins+git+maven+docker持续集成部署
环境准备: 安装centos7.1系统,最小化安装 设置好网络和防火墙 网络需要能访问外网, ip 192.168.1.7 下面关闭防火墙 setenforce 0 systemctl stop f ...
- Docker最佳实践-部署LNMP环境
标签(linux): docker 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 环境准备 [root@docker ~]# cat /etc/redhat-r ...
最新文章
- kubernetes关键特性和概述
- Windows 命令行输入输出重定向问题
- oracle简版如何打开,如何打开和关闭Oracle游标
- 日志查看工具 linux,用 Logwatch 工具查看 Linux 系统 Log 日志
- 阿里OSS图片存储java代码示例
- Bootstrap css3
- 如何处理APF框架的错误消息:Filter is too complex error
- 概率论 一维随机变量
- OpenCV与图像处理学习五——图像滤波与增强:线性、非线性滤波、直方图均衡化与Gamma变换
- python3中map的用法_python3中map()函数用法
- i 智慧 | IBM存储:全面贯彻新存储的“智慧之道”
- 临床外显子组测序分析中的那些坑(上)
- python支持函数式编程吗_利用Fn.py库在Python中进行函数式编程
- 一文读懂卷积神经网络(转载)
- 如何在FL Studio中对整首歌曲音量进行调整
- 使用rsync 实现服务器文件同步
- 人脸识别mtcnn原理
- python实现whois查询_Python 工具whois查询
- 机器人操作臂运动学入门一--D-H参数标定
- MSSqlserver的锁模式介绍
热门文章
- Linux下makefile教程
- 微信公众平台开发之微网站
- 微信jssdk签名java_JAVA生成微信JSSDK接口签名
- 页面上下滚动,背景图不动
- 一一二、react Hooks 父组件调用子组件方法
- Python—②Python基础
- Light-Head R-CNN : 旷世提出用于加速two-stage detector的通用结构,速度达102fps
- Oracle java官网关于可重入读写锁ReentrantReadWriteLock的解析
- java万能盒子_JAVA编程——我们为什么要用Redis
- 接口可以继承接口吗,抽象类可以继承接口吗,抽象类可以继承实体类吗?