Docker下运行Selenium Grid

Ubuntu下安装Docker

安装Docker命令

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

也可以使用国内 daocloud 一键安装命令:

curl -sSL https://get.daocloud.io/docker | sh

验证Docker

在/etc/下存在docker目录    

创建 Hub 网络

docker network create hub

创建 Hub 容器

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

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

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

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:挂载数据卷前操作

代码

#coding = utf-8
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
import unittest,time
from selenium.webdriver.common.by import By
          

class grid(unittest.TestCase):
       def setUp(self):
              #CHROME浏览器
              #capabilities = DesiredCapabilities.CHROME
              #FIREFOX浏览器
              #capabilities = DesiredCapabilities.FIREFOX
              #Edge浏览器
              capabilities = DesiredCapabilities.EDGE
              self.driver = webdriver.Remote(command_executor="http://192.168.0.140:5444/wd/hub",desired_capabilities=capabilities)
              self.driver.implicitly_wait(3)
              self.driver.get("https://www.baidu.com")
          

       def test_grid(self):
                     self.driver.find_element(By.ID, "kw").send_keys("大数据")
                     self.driver.find_element(By.ID,"su").click()
                     time.sleep(3)
                     self.assertEqual(self.driver.title,"大数据_百度搜索",msg="标题不对")
                            
       def tearDown(self):
                            self.driver.quit()
          

if __name__=="__main__":
              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

oot@ubuntu:/home/jerry# docker images
REPOSITORY              TAG                              IMAGE ID       CREATED         SIZE
selenium/node-firefox   4.0.0-rc-2-prerelease-20210923   92c3021e3c6c   18 months ago   1.08GB
selenium/node-chrome    4.0.0-rc-2-prerelease-20210923   65bf42806285   18 months ago   1.19GB
selenium/hub            4.0.0-rc-2-prerelease-20210923   1400a1793745   18 months ago   362MB

显示所有docker进程

root@ubuntu:/home/jerry# docker ps
CONTAINER ID   IMAGE                                                  COMMAND                  CREATED       STATUS       PORTS                                                                                                                             NAMES
b7878962f286   selenium/node-firefox:4.0.0-rc-2-prerelease-20210923   "/opt/bin/entry_poin…"   3 hours ago   Up 3 hours   5900/tcp                                                                                                                          node5
e5ac0ab85e3d   selenium/node-chrome:4.0.0-rc-2-prerelease-20210923    "/opt/bin/entry_poin…"   3 hours ago   Up 3 hours   5900/tcp                                                                                                                          node4
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

docker stop 前3个数字

删除docker

docker rm [-f] 前3个数字

-f:强制

有些stop后就被删除,有些stop后就需要rm掉。

删除镜像​​​​​​​

root@ubuntu:/home/jerry# docker rmi 65b
Error response from daemon: conflict: unable to delete 65bf42806285 (must be forced) - image is being used by stopped container e5ac0ab85e3d
root@ubuntu:/home/jerry# docker rm e5a
e5a
root@ubuntu:/home/jerry# docker rmi 65b
Untagged: selenium/node-chrome:4.0.0-rc-2-prerelease-20210923
Untagged: selenium/node-chrome@sha256:6bda96feb8f3079558b2045c4fa8cfd7e15b87706aec33eba9ed58cbe685e396
Deleted: sha256:65bf428062856707a50a548a9d9949b74e427baadc7e0a98e8ab7dffda7ff64e
Deleted: sha256:85424fdd6cd791e1cfa32caa023ea358c3200cc56d2fc218e28be223ed1ea5f9
…
root@ubuntu:/home/jerry# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

建立Docker网络

root@ubuntu:/home/jerry# docker network create 网络名

显示Docker网络

root@ubuntu:/home/jerry# docker network ls

删除Docker网络

root@ubuntu:/home/jerry# docker network rm 网络ID

最后: 下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取【保证100%免费】

在这里插入图片描述

 这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

软件测试技术交流群社:786229024(里面还有工作内推机会,毕竟我们是关系社会。)

软件测试面试文档

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

面试文档获取方式:

猜你喜欢

转载自blog.csdn.net/wx17343624830/article/details/129961425