同福

Python使用selenium操作Docker里的Chrome浏览器的技巧hub版【20220330】

介绍

介绍


selenium/hub和selenium/node-chrome

这是一个hub和node组成的多节点处理中心,它可以将多个Chrome浏览器集中到一起进行任务处理,可以实现给执行相同任务的Chrome浏览器扩容的目的。

拉取镜像

selenium/hub
selenium/node-chrome

启动hub容器

先启动hub镜像,使用GRID_MAX_SESSION设置开启的最大会话数量。为了后面的node方便连接福哥给这个容器加到了bridge2网络里面了。因为我们的selenium访问的是这个hub容器,所以福哥将它的4444端口映射到了宿主机的9515端口上面。

docker run -tid --name selenium-hub -h selenium-hub \
-e GRID_MAX_SESSION=10 \
--memory 128m --memory-swap -1 --net bridge2 -p 9515:4444 selenium/hub

home/topic/2021/1201/19/484ebf96de773df1ab4e929b19c4ea30.png
启动信息里的XPUB端口和XSUB端口请记住,后面会用到它们!

启动node容器

接下来启动node镜像,这里的SE_EVENT_BUS_HOST就是上面hub的名称,SE_EVENT_BUS_PUBLISH_PORT就是hub的XPUB端口,SE_EVENT_BUS_SUBSCRIBE_PORT就是hub的XSUB端口。同样的福哥将这个容器加到了bridge2网络里面了。

docker run -tid --name selenium-node-chrome -h selenium-node-chrome \
-e SE_EVENT_BUS_HOST=selenium-hub \
-e SE_EVENT_BUS_PUBLISH_PORT=4442 \
-e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 \
--memory 1g --memory-swap -1 --net bridge2 selenium/node-chrome

home/topic/2021/1201/19/469be1a1c38dd0e95787313de1d7bc8c.png
可以看到,我们的节点添加成功了!

测试

这个和单机版本一样,没有监视的功能,它是用来跑程序的~

# set opts
# chrome = webdriver.Chrome(options=opts)
chrome = webdriver.Remote("http://192.168.2.88:9515/wd/hub", options=opts)

home/topic/2021/1201/17/694d96db8e6fc8bbbd4c52b8aacaec5a.png

总结

今天福哥带着童鞋们学习了selenium的Docker版本的Chrome浏览器环境的搭建的技巧,通过这个Docker的镜像可以让我们更加方便地管理我们的selenium运行环境。
通过节点版本的镜像,我们还可以将我们的程序要执行的任务进行分布式的部署,提高执行效率!