IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 七.Python+Selenium自动化测试系列: Selenium Grid -> 正文阅读

[开发测试]七.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()

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-09-04 17:50:56  更:2021-09-04 17:51:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/17 22:26:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码