分布式自动化实际上的应用场景非常多,例如兼容性测试场景/稳定性场景等等,它可以轻松实现一份代码驱动若干终端执行自动化
分布式执行测试用例,也就是我们在一台机器上执行代码,通过Selenium Grid的机制它会驱动与之关联的多台机器执行相同的任务或者不同的任务,如图所示,一台机器我们称之为HUB,被驱动的机器我们称之为Node1、Node2和Node3
此处省略
整个Selenium Grid的环境中HUB机器作为中枢,是个指令集散地,我们要通过它将执行任务的指令分发到各个Node机器上去完成任务
启动命令行,然后将命令行的路径引导到存放selenium-server-standalone路径下并输入如下命令启动HUB
Java –jar selenium-server-standalone-3.141.0.jar –role hub –maxSession 10 –port 8888
在命令行中有几个重要的参数
Node既可以是另外一台机器,也可以和HUB是同一个机器,如果Node是另外一个机器,那么它也需要跟HUB机器一样的基础环境,需要安装Pyhton、Selenium、JDK和Selenium-Server-Standalone.xx.jar等等,保持和HUB机器环境一样即可。
既然是分布式,自然实际情况中Node大多数情况下会是新的机器, 在Node机器中配置好基础环境后,启动命令行,将命令行路径引导到selenium-server-standalone所在路径下,然后执行如下命令配置Chrome浏览器,如图所示,则表示执行成功
Java –Dwebdriver.chrome.driver=C:/Python37/chromedriver.exe –jar selenium-server-standalone-3.141.0.jar –role webdriver –hub http://192.168.1.10:8888/grid/register -browser browserName=chrome -port 7777
回过头来我们在HUB机器的命令行中,新增了一条Registered a node的信息
再看一下http://localhost:8888/grid/console页面,新增了我们的Node机器的信息
java -jar selenium-server-standalone-3.141.0.jar -role node -port 7777 -hub http://192.168.1.10:8888/grid/register -maxSession 5 -browser browserName=firefox,seleniumProtocol=WebDriver,maxInstances=5 –port 9999
回过头我们再看一下HUB的控制台,又新增了一条Register a node信息
再看一下http://localhost:8888/grid/console页面,新增了我们的Node机器的信息
使用同样的方法在Node机器上配置IE浏览器,启动命令行,将命令行路径引导到selenium-server-standalone所在路径下,然后执行如下命令
Java –Dwebdriver.chrome.driver=C:/Python37/ IEDriverServer.exe –jar selenium-server-standalone-3.141.0.jar –role webdriver –hub http://192.168.1.10:8888/grid/register -browser browserName=ie -port 6666
回过头我们再看一下HUB的控制台,又新增了一条Register a node信息
看一下http://localhost:8888/grid/console页面,新增了我们的Node机器的信息
实际上无论是在HUB端还是在Node端,如果链接出了问题是会在控制台输出相关信息的
# coding=utf-8
from selenium import webdriver
chrome_driver = "C:/Python37/chromedriver.exe"
chrome_capabilities = {
# 浏览器名称
"browserName": "chrome",
# 操作系统版本
"version": "",
# 平台,这里可以是windows、linux等等
"platform": "ANY",
# 是否启用js
"javascriptEnabled": True,
"webdriver.chrome.driver": chrome_driver
}
driver=webdriver.Remote("http://192.168.1.7:7777/wd/hub",desired_capabilities=chrome_capabilities)
driver.get("http://www.baidu.com")
print(driver.title)
driver.quit()
控制台会打印相关信息