docker Selenium-Grid环境搭建

原理可以自行了解:

总的来说 ,就是主节点和子节点,主节点发送任务request到子节点上,子节点收到命令并且执行

那么怎么搭建这套环境呢,他们又是如何连接起来的呢

一、主节点hub

首先可以查看和selenium相关的镜像,找到我们需要启动的镜像

这里使用 docker search selenium 可以查看

 

 

 这里我们选择selenium/hub镜像

开启镜像,selenium/hub,命令如下:

sudo docker run -d -p 4444:4444 -e GRID_MAX_SESSION=200 --restart=always --name hub selenium/hub

docker run 可以直接运行镜像, 首先它会去docker中查看是否有镜像selenium/hub,如果没有则进入docker hub下载(docker pull selenium/hub),然后启动;反之,直接启动

镜像启动成功:http://localhost:4444/grid/console 查看是否有启动,并且可以查看子节点

 

二、子节点启动

这里我使用的是docker search selenium找到的selenium/node-chrome和selenium/node-chrome-debug;

debug中自带vnc server 可以共开发者调试

开启debug镜像:

sudo docker run -d -e NODE_MAX_INSTANCES=1 -e NODE_MAX_SESSION=1 --shm-size=5g -p 5900:5900 --link hub:hub --name node4 selenium/node-chrome-debug

这里的5900端口暴露出来,才可以连接,否则会连接被拒:The connection was refused by the computer

打开之后,需要输入密码:secret

成功运行后,可以看到界面:

 

 

 三、运行脚本查看效果

脚本:

from selenium import webdriver

# 连接到主节点
driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub',
                          desired_capabilities={'browserName': 'chrome'})

driver.get('https://www.baidu.com/')

driver.find_element_by_id("kw").send_keys("小心走火")
driver.find_element_by_id("su").click()

运行脚本:内容如下

 

 

注意: 只运行一个case时,docker按顺序选择node节点运行一次该case。这样开多个node节点,然后使用多线程运行,即可将case并发进行了

 

posted @ 2020-08-27 11:05  小心走火  阅读(960)  评论(0编辑  收藏  举报