分布式自动化实际上的应用场景非常多,例如兼容性测试场景/稳定性场景等等,它可以轻松实现一份代码驱动若干终端执行自动化
分布式执行测试用例,也就是我们在一台机器上执行代码,通过Selenium Grid的机制它会驱动与之关联的多台机器执行相同的任务或者不同的任务,如图所示,一台机器我们称之为HUB,被驱动的机器我们称之为Node1、Node2和Node3
环境配置
下载安装配置JDK
此处省略
selenium-server-standalone下载与运行
- 首先启动命令行并运行命令“pip show selenium”,查看机器上的Selenium版本
- 然后通过地址https://selenium-release.storage.googleapis.com/index.html下载与Selenium版本相同的selenium-server-standalone
HUB与Node
整个Selenium Grid的环境中HUB机器作为中枢,是个指令集散地,我们要通过它将执行任务的指令分发到各个Node机器上去完成任务
启动HUB
启动命令行,然后将命令行的路径引导到存放selenium-server-standalone路径下并输入如下命令启动HUB
Java –jar selenium-server-standalone-3.141.0.jar –role hub –maxSession 10 –port 8888
在命令行中有几个重要的参数
- role hub表示我们启动的是hub不是node
- maxSession 10表示最大的会话请求是10个
- port 8888表示hub运行的端口。
启动成功后,用浏览器打开地址http://localhost:8888/grid/console,能看到页面如图所示,此时因为没有任何Node链接,我们只能看到一个HUB自身的Config信息
HUB端Selenium-Server-Standalone参数
- role hub 表示当前启动的是HUB不是Node
- hubConfig jsonFile 可以将参数放到json文件中,用该参数将json文件引入到命令行
- port HUB监听的端口号
- host HUB的ip
- newSessionWaitTimeout 指定新的测试session等待执行的时间间隔,默认为-1
- browserTimeout 浏览器无响应等待时间
启动Node
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机器的信息
Node端启动Selenium-Server-Standalone参数
- port Node端远程连接端口号,也是Node端监听的端口号
- role node 表示可支持所有版本的Seleniu
- role wd 表示不支持Selenium1,也可以直接写成webdriver
- role rc 表示支持selenium1
- timeout HUB端在无法收到Node的注册地址时,在该时间后会释放和Node节点的链接。
- hub hub_url Node节点需要与HUB完成注册,此参数为Node链接HUB的注册地址
- browser Node机器上允许使用的浏览器/browserName:浏览器名称/maxInstances:最多允许启动的浏览器个数
- browserTimeout 浏览器超时时间
- nodeTimeout Node端超时时间
- nodeConfig jsonFile Node端的参数配置可放在json文件中,然后使用该参数引入到命令中
在另一个Node机器上配置Firefox浏览器,启动命令行,将命令行路径引导到selenium-server-standalone所在路径下,然后执行如下命令
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()
# coding=utf-8
driver.quit()
控制台会打印相关信息
文章版权声明
1 原创文章作者:6359,如若转载,请注明出处: https://www.52hwl.com/35907.html
2 温馨提示:软件侵权请联系469472785#qq.com(三天内删除相关链接)资源失效请留言反馈
3 下载提示:如遇蓝奏云无法访问,请修改lanzous(把s修改成x)
4 免责声明:本站为个人博客,所有软件信息均来自网络 修改版软件,加群广告提示为修改者自留,非本站信息,注意鉴别