Docker下运行Selenium Grid

铁佛  论坛元老 | 2024-6-16 09:34:39 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1029|帖子 1029|积分 3087

Ubuntu下安装Docker
安装Docker命令
  1. curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
复制代码
也可以使用国内 daocloud 一键安装命令:
  1. curl -sSL https://get.daocloud.io/docker | sh
复制代码
验证Docker
在/etc/下存在docker目录    
创建 Hub 网络
  1. docker network create hub
复制代码
创建 Hub 容器
  1. docker run --name hub -d --net hub -p 5442-5444:4442-4444 selenium/hub:4.0.0-rc-2-prerelease-20210923
复制代码
--name:给启动的容器定名一个别名。
5442-5444:hub 与 node 的通信服务。
5444:提供 hub 的 web 图形界面服务。         
创建chrome node
  1. docker run -d --name nodeChrome --net hub -e SE_EVENT_BUS_HOST=hub --shm-size="2g" -e SE_EVENT_BUS_PUBLISH_PORT=4442 -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 -v /dev/shm:/dev/shm selenium/node-chrome
复制代码
创建firefox node
  1. docker run -d --name nodeFirefox --net hub -e SE_EVENT_BUS_HOST=hub --shm-size="2g" -e SE_EVENT_BUS_PUBLISH_PORT=4442 -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 -v /dev/shm:/dev/shm selenium/node-firefox
复制代码
创建edge node
  1. docker run -d --name nodeEdge --net hub -e SE_EVENT_BUS_HOST=hub --shm-size="2g" -e SE_EVENT_BUS_PUBLISH_PORT=4442 -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 -v /dev/shm:/dev/shm selenium/node-edge
复制代码
表明
-e SE_EVENT_BUS_HOST:主机A的IP地址
-e SE_EVENT_BUS_PUBLISH_PORT:总线publish端口(4442)
-e SE_EVENT_BUS_SUBSCRIBE_PORT:总线subscribe端口(4443)
–shm-size=“2g” :来使用主机的共享内存,防止容器崩溃,这是避免欣赏器在 docker 容器内崩溃的已知办理方法,这里是 Chrome和Firefox的记载问题。2gb 的 shm 巨细是恣意的,但已知结果很好,您的特定用例可能需要不同的值,发起根据您的需要调整此值。
-v /dev/shm:/dev/shm:挂载数据卷前操作
代码
  1. #coding = utf-8
  2. from selenium import webdriver
  3. from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
  4. import unittest,time
  5. from selenium.webdriver.common.by import By
  6.          
  7. class grid(unittest.TestCase):
  8.        def setUp(self):
  9.               #CHROME浏览器
  10.               #capabilities = DesiredCapabilities.CHROME
  11.               #FIREFOX浏览器
  12.               #capabilities = DesiredCapabilities.FIREFOX
  13.               #Edge浏览器
  14.               capabilities = DesiredCapabilities.EDGE
  15.               self.driver = webdriver.Remote(command_executor="http://192.168.0.140:5444/wd/hub",desired_capabilities=capabilities)
  16.               self.driver.implicitly_wait(3)
  17.               self.driver.get("https://www.baidu.com")
  18.          
  19.        def test_grid(self):
  20.                      self.driver.find_element(By.ID, "kw").send_keys("大数据")
  21.                      self.driver.find_element(By.ID,"su").click()
  22.                      time.sleep(3)
  23.                      self.assertEqual(self.driver.title,"大数据_百度搜索",msg="标题不对")
  24.                            
  25.        def tearDown(self):
  26.                             self.driver.quit()
  27.          
  28. if __name__=="__main__":
  29.               unittest.main()
复制代码
在欣赏器中输入http://192.168.0.140:5444/ui/index.html#/
192.168.0.140为Hub的IP地址

其他参数:
1)–scale chrome=num
docker-compose up -d --scale chrome=num 
num是要启动节点的数目,chrome是docker-compose文件中节点的名称
2)VNC_NO_PASSWORD=1
没有密码验证的情况下运行 VNC
3)VNC_VIEW_ONLY=1
仅检察模式下运行 VNC
4)-e SE_NODE_MAX_SESSIONS=10
增加每个容器的会话并发性
5)-e SE_OPTS= “–log-level FINE”
可以通过将环境变量通报给容器来增加日志输出
6)docker logs -f <容器 ID | 容器名称>
所有输出都发送到尺度输出,因此可以通过运行查抄
7)-e JAVA_OPTS=-Xmx512m
告诉节点变乱总线在哪里,以便它可以注册自己。
8)-e SE_EVENT_BUS_SUBSCRIBE_PORT=4443
-e SCREEN_WIDTH=1366
-e SCREEN_HEIGHT=768
-e SCREEN_DEPTH=24
-e SCREEN_DPI=74
设置屏幕分辨率
9)-e SE_NODE_SESSION_TIMEOUT
网格URL和会话超时,默认300秒
10)-e E_SESSION_REQUEST_TIMEOUT=500
超时为 500 秒
11)-e SE_SESSION_RETRY_INTERVAL=2
重试隔断为 2 秒
12)-e SE_NODE_OVERRIDE_MAX_SESSIONS true
启用视频录制
13)-e START_XVFB=false
以无头模式运行,默认是true
Docker干系操作
显示当前所有docker镜像
r
  1. oot@ubuntu:/home/jerry# docker images
  2. REPOSITORY              TAG                              IMAGE ID       CREATED         SIZE
  3. selenium/node-firefox   4.0.0-rc-2-prerelease-20210923   92c3021e3c6c   18 months ago   1.08GB
  4. selenium/node-chrome    4.0.0-rc-2-prerelease-20210923   65bf42806285   18 months ago   1.19GB
  5. selenium/hub            4.0.0-rc-2-prerelease-20210923   1400a1793745   18 months ago   362MB
复制代码
显示所有docker进程
  1. root@ubuntu:/home/jerry# docker ps
  2. CONTAINER ID   IMAGE                                                  COMMAND                  CREATED       STATUS       PORTS                                                                                                                             NAMES
  3. b7878962f286   selenium/node-firefox:4.0.0-rc-2-prerelease-20210923   "/opt/bin/entry_poin…"   3 hours ago   Up 3 hours   5900/tcp                                                                                                                          node5
  4. e5ac0ab85e3d   selenium/node-chrome:4.0.0-rc-2-prerelease-20210923    "/opt/bin/entry_poin…"   3 hours ago   Up 3 hours   5900/tcp                                                                                                                          node4
  5. 793546faef29   selenium/hub:4.0.0-rc-2-prerelease-20210923            "/opt/bin/entry_poin…"   3 hours ago   Up 3 hours   0.0.0.0:5442->4442/tcp, :::5442->4442/tcp, 0.0.0.0:5443->4443/tcp, :::5443->4443/tcp, 0.0.0.0:5444->4444/tcp, :::5444->4444/tcp   hub4
复制代码
克制docker
  1. docker stop 前3个数字
复制代码
删除docker
  1. docker rm [-f] 前3个数字
复制代码
-f:逼迫
有些stop后就被删除,有些stop后就需要rm掉。
删除镜像​​​​​​​
  1. root@ubuntu:/home/jerry# docker rmi 65b
  2. Error response from daemon: conflict: unable to delete 65bf42806285 (must be forced) - image is being used by stopped container e5ac0ab85e3d
  3. root@ubuntu:/home/jerry# docker rm e5a
  4. e5a
  5. root@ubuntu:/home/jerry# docker rmi 65b
  6. Untagged: selenium/node-chrome:4.0.0-rc-2-prerelease-20210923
  7. Untagged: selenium/node-chrome@sha256:6bda96feb8f3079558b2045c4fa8cfd7e15b87706aec33eba9ed58cbe685e396
  8. Deleted: sha256:65bf428062856707a50a548a9d9949b74e427baadc7e0a98e8ab7dffda7ff64e
  9. Deleted: sha256:85424fdd6cd791e1cfa32caa023ea358c3200cc56d2fc218e28be223ed1ea5f9
  10. root@ubuntu:/home/jerry# docker images
  11. REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
复制代码
创建Docker网络
  1. root@ubuntu:/home/jerry# docker network create 网络名
复制代码
显示Docker网络
  1. root@ubuntu:/home/jerry# docker network ls
复制代码
删除Docker网络
  1. root@ubuntu:/home/jerry# docker network rm 网络ID
复制代码
最后: 下方这份完整的软件测试视频学习教程已经整理上传完成,朋侪们假如需要可以自行免费领取【包管100%免费】

 这些资料,对于【软件测试】的朋侪来说应该是最全面最完整的备战堆栈,这个堆栈也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!
  1. 软件测试技术交流群社:786229024(里面还有工作内推机会,毕竟我们是关系社会。)
复制代码
软件测试口试文档

我们学习必然是为了找到高薪的工作,下面这些口试题是来自阿里、腾讯、字节等一线互联网大厂最新的口试资料,而且有字节大佬给出了权威的解答,刷完这一套口试资料信赖各人都能找到满足的工作。

口试文档获取方式:




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

铁佛

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表