同福

Python使用selenium操作Docker里的Chrome浏览器的技巧单机版【20220329】

介绍

介绍

今天福哥要带着大家学习如何使用selenium去调用部署在Docker环境里面的Chrome浏览器的方法。为什么我们要把chromedriver部署到Docker里面呢?因为把Chrome浏览器部署到Docker里面有如下几个优点:

  • 不用担心Chrome升级导致的需要手动升级chromedriver驱动的问题。

  • 部署方便,Chrome浏览器和chromedriver驱动都安装好了,启动起来即可。

  • 支持多节点部署,可以轻松部署多个Chrome浏览器环境的处理中心,提高执行效率。

接下来大家就跟着福哥学习使用Docker环境里面的Chrome浏览器处理我们的selenium程序的方法吧~

selenium/standalone-chrome

这是一个单机版本的镜像,这个里面包括一个chrome浏览器,可以用来调试selenium程序。

拉取镜像

selenium/standalone-chrome

启动容器

chromedriver的默认端口是4444(真吉利啊~~),福哥给映射到宿主机的9515端口上面了。

docker run -tid --name selenium-standalone-chrome -h selenium-standalone-chrome --memory 1g --memory-swap -1 -p 9515:4444 selenium/standalone-chrome

home/topic/2021/1201/17/4293764d67e604a17c899b34aac92414.png

测试

这里有一点要说明下,这个和前面福哥讲的Windows环境的远程chromedriver不太一样的是,这里的远程地址要加上“/wd/hub”路径才行。

# 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/standalone-chrome-debug

这是一个单机版本的镜像,这个里面包括一个chrome浏览器,可以用来调试selenium程序。它和selenium/standalone-chrome的区别在于,这个里面还会启动一个VNC服务,可以通过VNC客户端连接进来浏览器的执行情况,便于调试selenium程序。

拉取镜像

selenium/standalone-chrome-debug

启动容器

福哥除了映射了chromedriver的默认端口4444到宿主机的9515端口外,还将VNC的5900端口也映射到宿主机的5900端口上面了。

docker run -tid --name selenium-standalone-chrome-debug -h selenium-standalone-chrome-debug --memory 1g --memory-swap -1 -p 9515:4444 -p 5900:5900 selenium/standalone-chrome-debug

home/topic/2021/1201/17/921cbe2cfbd4d737621350d463746757.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

测试VNC

打开VNC软件,设置VNC主机为192.168.2.88:5900,进入后可以看到chromedriver环境的桌面,启动selenium程序后,可以看到浏览器执行过程。

VNC默认密码是secret!!!

连接到VNC可以看到这样的桌面。

home/topic/2021/1201/17/6664aee2f9e470733cea98ae98efe7f4.png启动selenium程序后,可以看到浏览器正在打开“同福网”页面。

home/topic/2021/1201/17/f149b87abde82007ef1089a8255ddf7f.png

我们可以进入到chromedriver虚拟机里面进行F12调试操作。

总结

今天福哥带着童鞋们学习了selenium的Docker版本的Chrome浏览器环境的搭建的技巧,通过这个Docker的镜像可以让我们更加方便地管理我们的selenium运行环境。

通过节点版本的镜像,我们还可以将我们的程序要执行的任务进行分布式的部署,提高执行效率!