Python自动化测试系列[v1.0.0][分布式自动化]

分布式自动化实际上的应用场景非常多,例如兼容性测试场景/稳定性场景等等,它可以轻松实现一份代码驱动若干终端执行自动化
分布式执行测试用例,也就是我们在一台机器上执行代码,通过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()

控制台会打印相关信息
在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Davieyang.D.Y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值