(1)安装docker环境。安装请百度
(2)启动docker
service docker start
(3) 然后获取selenium相关镜像,本篇部署一个hub,一个chrome node;一个firefox node;
docker pull selenium/hub
docker pull selenium/node-chrome-debug
docker pull selenium/node-firefox-debug
查看镜像docker images
(4)创建并运行selenium容器
启动容器myhub并映射端口
docker run -d --name myhub -p 5555:4444 selenium/hub
将selenium/node-chrome-debug节点容器与容器myhub之间链接起来(--link是链接别名为hub的容器)
docker run -d --name node -p 5902:5900 --link myhub:hub selenium/node-chrome-debug
创建firefox node容器,将selenium/node-firefox-debug容器与容器myhub之间链接起来(--link是链接别名为hub的容器)
docker run -d --name node1 -p 5901:5900 --link myhub:hub selenium/node-firefox-debug
使用虚拟机ip+映射端口打开http://192.168.222.132:5555/grid/console,这时候selenium grid环境已经部署完成,这就是在docker里部署的好处,用容器的隔离,省去好几台设备部署node,
(5)VNC远程浏览器环境安装
Vnc server下载地址:https://www.realvnc.com/en/connect/download/vnc/
Viewer下载地址:https://www.realvnc.com/en/connect/download/viewer/
Viewer远程链接:debug结尾的镜像都带有VNC服务端,本机安装VNC客户端,即可远程连接(密码是secret)
(6)运行代码
运行代码时,提示我没有selenium模块,于是我安装了相关模块
python -m pip install selenium (python3安装)
再次运行测试代码,代码例子如下
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author : ##
# @Time : 2021/7/25 23:24
from selenium import webdriver
firefox_capabilities = {
"browserName": "firefox",
"version": "90.0", # 注意版本号一定要写对
"platform": "LINUX",
"javascriptEnabled": True,
"marionette": True,
}
browser = webdriver.Remote("http://192.168.222.132:5555/wd/hub",
desired_capabilities=firefox_capabilities) # 注意端口号5555是我们上文中映射的宿主机端口号
browser.get("http://www.baidu.com")
browser.find_element_by_id('kw').send_keys('docker')
browser.find_element_by_id('su').click()
browser.get_screenshot_as_file("D:/baidu.png")
firefox_capabilities参数来自于grid/console:
运行代码:
chrome代码和firfox差不多,根据grid/console改一下capabilities参数运行就好: