七.Python+Selenium自动化测试系列: Selenium Grid

1、Selenium Grid介绍

Selenium Grid在前面中有介绍,即三大组件之一,主要作用就是分布式执行测试

(1)selenium grid只负责运行。所以我们的脚本还是需要利用Webdriver,在我们的开发环境中去写好。

(2)selenium grid提供了hub和node。 hub被称为总控节点,hub总管脚本代码,加载所有的测试机      器,分发运行脚本。一个grid里面只有一个hub。

(3)node称之为节点。好比连接网络的各个终端设备,可以有很多个node,node用于接收代码,并在不同的浏览器中运行代码。

2、Selenium Grid的使用

(1)、前期准备

        a、环境准备,因为selenium底层是用java实现的,所以需要安装Java运行环境。
自行网上搜索如何安装JDK,并配置环境变量

        b、安装需要运行的浏览器。

        c、下载浏览器driver:

Chrome,https://npm.taobao.org/mirrors/chromedriver/
Firefox,https://github.com/mozilla/geckodriver/releases                                                               放到和selenium server相同的路径下(查看) ,否则在启动node时要加参数,不然启动不了浏览器,也可以指定路径(java -Dwebdriver.chrome.driver=“C:\your path\chromedriver.exe” -jar selenium-server-standalone-3.141.59.jar -role node -hub http://192.168.1.100:5566/grid/register/,可切换浏览器)。

        d、下载selenium server,将selenium-server-standalone-X.XX.jar分别放在“主机H”和“主机N”上(自定义路径)。
下载地址: https://www.selenium.dev/downloads/

(2)开启hub服务

本次hub部署在虚拟机的Linux系统上,新建一个文件夹命名为“Selenium_Grid”,把jar包和浏览器驱动放入其中
执行: java -jar selenium-server-standalone-3.141.59.jar -role hub -port 4445
参数说明
-role 启用程序角色为hub;
-port设置端口号,hub的默认端口也是4444

在浏览器中查看grid控制台: http://192.168.149.129:4445/grid/console

(3)新增node节点

在本机中任意一个盘符,新增一个文件夹名称自定义,我这边取名为“Selenium_Grid”,cmd进入selenium server所在的路径下,
执行:java -jar selenium-server-standalone-3.141.59.jar -role node -hub http://192.168.149.129:4445/grid/register/ -port 5556

 刷新grid控制台:http://192.168.149.129:4445/grid/console
Browser中注册了WebDriver:1个IE实例,5个Firefox实例,5个Chrome实例

拓展:同样的hub和node也可以使用配置文件启动

a、hub:

在selenium-server-standalone-3.141.59.jar包所在目录下新增hubConfig.json,内容如下

{
	"port": 4445,
	"newSessionWaitTimeout": -1,
	"servlets": [],
	"withoutServlets": [],
	"custom": {},
	"capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher",
	"registry": "org.openqa.grid.internal.DefaultGridRegistry",
	"throwOnCapabilityNotPresent": true,
	"cleanUpCycle": 5000,
	"role": "hub",
	"debug": false,
	"browserTimeout": 0,
	"timeout": 1800
}

执行启动:java -jar selenium-server-standalone-3.141.59.jar -role hub -hubConfig hubConfig.json

b、node:

在selenium-server-standalone-3.141.59.jar包所在目录下新增nodeConfig.json,内容如下

{	"capabilities": [{
		"browserName": "firefox",
		"marionette": true,
		"maxInstances": 5,
		"seleniumProtocol": "WebDriver"
	},
	{
		"browserName": "chrome",
		"maxInstances": 5,
		"seleniumProtocol": "WebDriver"
	},
	{
		"browserName": "internet explorer",
		"platform": "WINDOWS",
		"maxInstances": 1,
		"seleniumProtocol": "WebDriver"
	},
	{
		"browserName": "safari",
		"technologyPreview": false,
		"platform": "MAC",
		"maxInstances": 1,
		"seleniumProtocol": "WebDriver"
	}],
	"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
	"maxSession": 5,
	"port": 5556,
	"register": true,
	"registerCycle": 5000,
	"hub": "http://192.168.149.129:4445",
	"nodeStatusCheckTimeout": 5000,
	"nodePolling": 5000,
	"role": "node",
	"unregisterIfStillDownAfter": 60000,
	"downPollingLimit": 2,
	"debug": false,
	"servlets": [],
	"withoutServlets": [],
	"custom": {}
}

执行启动:java -jar selenium-server-standalone-3.141.59.jar -role node -nodeConfig nodeConfig.json

(4)使用Grid执行代码

        编写代码使用Remote链接hub,然后运行, hub会自动分配到节点(node)运行程序

from time import sleep
from selenium import webdriver

ds = {'platform': 'ANY',         # 平台,操作系统
      'browserName': "chrome",   # 浏览器
      'version': '',             # 浏览器版本
      'javascriptEnabled': True  # 是否可以执行js
      }
driver = webdriver.Remote('http://192.168.149.129:4445/wd/hub', desired_capabilities=ds)
driver.get("https://www.baidu.com")
driver.find_element_by_id('kw').send_keys("selenium")
driver.find_element_by_id('su').click()
sleep(3)
driver.quit()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

liang_cr

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

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

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

打赏作者

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

抵扣说明:

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

余额充值