Selenium Grid简介

利用Selenium Grid可以使主节点(hub)的测试用例在不同主机即分支点(node)运行。可以使一份测试用例在不同环境下(操作系统、浏览器)执行自动化测试。Selenium Grid 使用Hub和Node模式,一台计算机作为Hub(管理中心)管理其他多个Node(节点)计算机,Hub负责将测试用例分发给多台Node计算机执行,并收集Node计算机执行结果的报告,汇总后提交一份总的测试报告。

Hub:

1.在分布式测试模式中,只能有一台作为Hub的计算机。

2.Hub负责关机测试用例,并负责发送脚本给其他Node节点。

3.所有的Node节点计算机会在Hub计算机中先进行注册,祖册成功后再和Hub计算机通信,Node节点计算机会告之Hub自己的相关信息,例如,Node计算机的操作系统和浏览器版本。

4.Hub计算机可以为自己分配执行测试用例的任务。

5.Hub计算机分发的测试用例任务会在各个Node计算机节点执行。

Node:

1.在分布测试中可以有一个或多个Node节点。

2.Node节点会打开本地的浏览器完成测试任务并返回测试结果给Hub。

3.Node节点的操作系统和浏览器版本无需和Hub保持一致。

4.在Node节点上可以同时打开多个浏览器并行执行测试任务。

selenium Grid环境搭建

grid下载地址:http://selenium-release.storage.googleapis.com/index.html

找一个版本和自己使用的selenium版本相同的下载,这里下载的时2.53.1

启动Hub:

下载完成后,打开cmd,进入jar问件所在目录,执行命令 java -jar selenium-server-standalone-2.53.1.jar -role hub

打开浏览器输入本机的IP+端口号(下图所示)

点击console

点击view config

修改Hub参数

方式一:

(例:修改端口号为 5566)

在cmd中按Ctrl+C退出关闭当前的Hub,执行命令 java -jar selenium-server-standalone-2.53.1.jar -role hub -port 5566

方式二:

在存放grid的目录下新建一个hub.json文件,将Hub所有参数放进去

{
"browserTimeout": 0,
"capabilityMatcher":"org.openqa.grid.internal.utils.DefaultCapabilityMatcher",
"cleanUpCycle": 5000,
"host": null,
"jettyMaxThreads": -1,
"maxSession":10,
"newSessionWaitTimeout": -1,
"nodePolling": 5000,
"port": 5555,
"prioritizer": null,
"role": hub,
"servlets": [],
"throwOnCapabilityNotPresent": true,
"timeout":200000
}

根据自己实际情况修改后在cmd中执行命令: java -jar selenium-server-standalone-2.53.1.jar -role hub -hubConfig hub.json

打开浏览器输入IP+端口即可

Node使用

node节点计算机要求

1. Node 节点必须要有 java 环境

2. Node节点跟Hub节点机器间可以互相 ping 通。

3. Node 节点负责执行Selenium 脚本,所以必须有Selenium 环境(脚本语言对应的环境如java, 各个浏览器及其对应的driver)

启动Node节点注册到Hub

在cmd中执行命令:java -jar selenium-server-standalone-2.53.1.jar -role node -hub http://192.168.1.8:4444/grid/register(192.168.1.8:4444是我打开的Hub地址,可以根据自己实际情况而定)

Hub中看到的效果如下

修改参数(和Hub的一样)

方式一:

以修改端口为例

在cmd中执行命令:java -jar selenium-server-standalone-2.53.1.jar -role node -hub http://192.168.1.8:4444/grid/register -port 5556

方式二:

在grid文件下创建一个node.json文件,json内容如下(其中的hub值根据实际情况做修改):

{
"capabilities": [
{
"browserName": "chrome",
"maxInstances": 10,
"platform": "WINDOWS",
"version": "51",
"webdriver.chrome.driver":"chromedriver.exe"
},
{
"browserName": "firefox",
"maxInstances": 10,
"platform": "WINDOWS",
"version": "46"
},
{
"browserName": "internet explorer",
"maxInstances": 3,
"platform": "WINDOWS",
"version": "11",
"webdriver.ie.driver":"IEDriverServer.exe"
}

],
"configuration": {
"proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
"maxSession": 5,
"port": 6060,
"register": true,
"registerCycle": 5000,
"hub": "http://192.168.1.8:4444"
}
}

在cmd中执行命令:java -jar selenium-server-standalone-2.53.1.jar -role node -nodeConfig node.json

这种方式修改的配置参数只能执行webdriver脚本。也能通过命令的方式指定执行webdriver脚本,执行命令:java -jar selenium-server-standalone-2.53.1.jar -role wd -port 6767 -hub http://192.168.1.8:4444/grid/register

(此方法基本不使用)只能执行rc脚本的命令:java -jar selenium-server-standalone-2.53.1.jar -role rc-port 6768 -hub http://192.168.1.8:4444/grid/register

指定Node节点计算机执行测试用例

启动一个Hub:java -jar selenium-server-standalone-2.53.1.jar -role hub -port 5050

启动一个Node并注册大Hub:java -jar selenium-server-standalone-2.53.1.jar -role node -hub http://192.168.1.8:5050/grid/register

Java代码

package com.selenium;import java.net.MalformedURLException;
import java.net.URL;import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.Assert;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;public class Grid {WebDriver driver;@BeforeTestpublic void BeforeTest() throws MalformedURLException{//创建一个DesiredCapabilities类型
        DesiredCapabilities ChromeGrid=DesiredCapabilities.chrome();//实例化一个driverdriver=new RemoteWebDriver(new URL("http://192.168.1.8:5050/wd/hub"),ChromeGrid);    driver.get("https://www.baidu.com/");}@Testpublic void gridTest() throws InterruptedException{driver.findElement(By.xpath("//*[@id='kw']")).sendKeys("selenium");driver.findElement(By.xpath("//*[@id='su']")).click();    Thread.sleep(3000);    //获取页面上的资源String sourcetext=driver.getPageSource();//校验搜索结果是否包含 seleniumAssert.assertTrue(sourcetext.contains("selenium"));Thread.sleep(3000);    }@AfterMethodpublic void aftermethod(){driver.quit();}}

通过TestNG数据驱动的方式指定Node节点计算机上指定浏览器执行测试用例

Java代码:

package com.selenium;import java.net.MalformedURLException;
import java.net.URL;import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.Assert;
import org.testng.annotations.*;public class GridBingFa {WebDriver driver;    @DataProvider(name="data")public Object[][] Data(){return new Object[][]{{"chrome","http://192.168.1.8:6060/wd/hub"},{"ie","http://192.168.1.8:6070/wd/hub"},};}@Test(dataProvider="data")public void test(String browser,String Url) throws InterruptedException, MalformedURLException{DesiredCapabilities BrowserGrid = null;if(browser.contentEquals("chrome")){BrowserGrid =DesiredCapabilities.chrome();}else{BrowserGrid =DesiredCapabilities.internetExplorer();            }WebDriver driver=new RemoteWebDriver(new URL(Url),BrowserGrid);driver.get("https://www.baidu.com/");driver.findElement(By.xpath("//*[@id='kw']")).sendKeys("selenium");driver.findElement(By.xpath("//*[@id='su']")).click();    Thread.sleep(3000);    //获取页面上的资源String sourcetext=driver.getPageSource();//校验搜索结果是否包含 seleniumAssert.assertTrue(sourcetext.contains("selenium"));Thread.sleep(3000);    driver.quit();}}

 

转载于:https://www.cnblogs.com/puhongjun/p/10335550.html

selenium Grid2环境搭建和基本使用相关推荐

  1. selenium自动化测试环境搭建及启动safair浏览器(Mac)

    selenium自动化测试环境搭建及启动safair浏览器 ###前提环境 mac系统 safair浏览器 python(只不过mac自带python2.7可以不用下载) pycharm 打开终端 p ...

  2. java +Selenium 2 环境搭建

    java +Selenium 2 入门学习 Selenium 2介绍 Selenium 是用于测试 Web 应用程序用户界面 (UI) 的常用框架.它是一款用于运行端到端功能测试的超强工具.您可以使用 ...

  3. 测试小白基于java的selenium自动化测试环境搭建

    本人是一个软件测试小白,自己在研究自动化测试时,真的入了不少坑,直到现在,才勉强将环境搭建了起来. 在此,我随随便便总结了一下基于java的selenium自动化测试环境搭建,送给正在学习软件测试的你 ...

  4. python+pycharm+selenium自动化测试环境搭建步骤

    python+pycharm+selenium自动化测试环境搭建步骤 原文链接:https://blog.csdn.net/weixin_51429941/article/details/116850 ...

  5. Python+selenium自动化测试环境搭建(详细)

    Python+selenium自动化测试环境搭建 环境版本: Python3.7+Selenium3.141+谷歌浏览器76.0/火狐浏览器 一.安装五大组件 1.安装python并配置环境变量   ...

  6. 从零开始编写Web自动化测试脚本(一)--Selenium+WebDriver环境搭建

    第一章 Selenium+WebDriver环境搭建 第二章 Selenium定位方式 第三章 元素常用属性 第四章 自动化中的三种等待 第五章 自动化浏览器设置及句柄.窗口切换操作 第六章 鼠标.键 ...

  7. selenium+linux+python,Linux下Python+selenium自动化环境搭建

    selenium介绍 Selenium自动化测试工具,主要是用于web应用程序的自动化UI测试,是目前主流的自动化测试工具,主要特点为开源,跨平台,支持主流的浏览器,支持多种编程语言并且支持支持分布式 ...

  8. 《手把手教你》系列基础篇之1-python+ selenium自动化测试-环境搭建(详细)

    1.环境搭建 基于python3和selenium3做自动化测试,俗话说:工欲善其事必先利其器:没有金刚钻就不揽那瓷器活,磨刀不误砍柴工,因此你必须会搭建基本的开发环境,掌握python基本的语法和一 ...

  9. Python+Selenium+Appium环境搭建

    贫僧第一次写博客,如有不到之处,还望包涵!!! 附Python+Selenium+Appium安装包下载百度盘地址: https://pan.baidu.com/s/1dL5lIe   密码:s9hg ...

最新文章

  1. gnuradio 使用eclipse 编辑器记录
  2. c++枚举类型(一)
  3. mysql40题_mysql40题
  4. win32应用程序创建流程
  5. 20131127-正则表达式
  6. 电脑小常识:电脑键盘失灵怎么办?
  7. 电脑显示链接网络正常但是不能上网,用某些软件会提示系统丢失libeay32.dll
  8. 退休的姐妹们,你们还打工吗?
  9. Windows 7安装 Visual Studio 2010之大战三大回合
  10. Matlab - Matlab 2016a 安装破解教程
  11. 产品经理必懂的28个心理学效应
  12. 2018中国方案商500强榜单
  13. 氧化三甲胺及相关代谢物检测
  14. Landscape-施密特版图触发器设计
  15. Monte Carlo analysis
  16. ZYNQ EMMC/FLASH/SD卡硬件性能测试
  17. ERC-3525 通过倒计时 SFT 是什么?有什么用?
  18. Google Alerts 使用指南 | 这个服务,帮你知道互联网上你想知道的各种事
  19. 关于服务器被入侵+植入病毒木马
  20. Windows10迈克菲McAfee添加文件白名单,排除隔离文件

热门文章

  1. 鸿蒙上线发布会,华为6月2日线上新品发布会开启-鸿蒙系统正式上线
  2. 性能优化:使用距离平方而不是距离
  3. 《炬丰科技-半导体工艺》光刻胶回流特性在金刚石微透镜制造中的应用
  4. 截取文本内容,包括中英文,多余则显示省略号
  5. iOS 拨打电话三种方式总结
  6. java对接PayPal支付(ipn中文乱码解决)
  7. 智慧电力智能电网解决方案
  8. 解决docker空间已满(清除containers下日志)
  9. 一种VS设置中文编码格式的方式
  10. 广和通车载模组荣获“2021年度汽车电子科学技术优秀创新产品奖”