在编写调试脚本时一般采用本机上的Selenium环境。在执行用例和协作时,则需要我们部署Selenium服务,使用专门的Selenium服务来执行用例。
使用Selenium Grid
部署Selenium服务一般采用Selenium Grid的方式。Selenium Grid采用Hub/Node的模式,一个集中服务Hub,连接多个拥有浏览器的执行Node节点。
如下图。
使用Selenium Grid搭建Selenium服务的方式如下。
- 下载Selenium Server: https://www.selenium.dev/downloads/
下载下来是一个名为selenium-server-standalone-3.141.59.jar的jar包 - 启动主控服务-Hub
使用以下命令启动Hub节点
java -jar selenium-server-standalone-3.141.59.jar -role hub -port 5566
访问Grid Console http://localhost:5566/grid/console
- 注册执行节点-Node
java -jar selenium-server-standalone-3.141.59.jar -role node -hub http://localhost:5566/grid/register/ -port 5577
如果执行节点和Hub节点不知一台机器,则需要把localhost改为Hub节点的ip地址。
再次访问Grid Console 就可以看到注册的节点和节点所拥有的浏览器。
使用Selenium Grid服务需要使用webdriver.Remote方法连接服务,并传入desired_capbilities 期望的能力。示例脚本如下。
from selenium import webdriver
import time
caps = {
'platform': 'ANY',
'browserName': 'chrome',
'version': '',
}
dr = webdriver.Remote('http://localhost:4444/wd/hub', desired_capabilities=caps)
dr.get('https://www.baidu.com')
print(dr.title)
dr.quit()
运行脚本,此时Hub就会选择一个满足你要求的节点执行。
使用Docker版Selenium
执行Node服务,一般都会采用Linux系统如Centos或Ubuntu,大部分情况是*面的,那就不方便安装有界面的Chrome浏览器,虽然有一些解决方法或使用Chrome的Headless模式。
然而定位问题等也非常不方便,因此推荐使用Docker的方式不是Selenium Grid + Node服务,操作方式如下。
- 安装Docker
- 下载镜像
docker pull selenium/hub
docker pull selenium/node-firefox
docker pull selenium/node-chrome
注意:selenium/node-firefox
和selenium/node-chrome
都是*面的。
要想能看到实时运行界面,需要使用以下两个镜像之一。
docker pull selenium/standalone-chrome-debug
docker pull selenium/standalone-firefox-debug
- 启动Hub节点的Docker
docker run -p 5555:4444 -d --name hub selenium/hub
- 启动Node节点的Docker
docker run -P -d --link hub:hub --name firefox selenimu/node-firefox
docker run -P -d --link hub:hub --name chrome selenimu/node-chrome
或带Debug界面的Node节点
docker run -d -p 5900:5900 --link hub:hub selenium/node-chrome-debug
如果想要查看实时运行界面,需要使用vnc viewer, 配置如图:
使用zelenium
zelenium同样是基于Selenium Grid的Docker镜像,优点是集成了运行日志和录像功能,非常方便易用。
操作方式参考 Zelenium的初步使用
参考: https://blog.csdn.net/lb245557472/article/details/91966770
https://www.cnblogs.com/nanaheidebk/p/10109013.html