java web grid_java-selenium Grid2环境搭建和基本使用

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环境搭建

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

604b9852cf3a672abdf3b6ab2f85195d.png

启动Hub:

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

6c16693b6b3804ebbd68a8156ed2f3ab.png

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

9fdf933dfe798083b5e92fa500fe43fc.png

点击console

c620aacae9f2d565fbc9b8e63003bf66.png

点击view config

62398010ae17e0e7850c8f6f747d9ea5.png

025d09d6192cbf782d0da04aafe76d86.png

修改Hub参数

方式一:

(例:修改端口号为 5566)

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

c3a0fcc507ff2b9c31c16bb9636f9dcd.png

56c18f2cdd7fdadc1066b325d87fa50b.png

方式二:

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

7a0f08942b115bf1c30a8f10e16608f5.png

cb00d5cd8c3f20c05a07b488f218519a.png

{

"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地址,可以根据自己实际情况而定)

fd20901257dcfa176dd6861461822785.png

Hub中看到的效果如下

e8c3b90dae562ab861f690c39cee5700.png

修改参数(和Hub的一样)

方式一:

以修改端口为例

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

c49849a01b81ef16b241fe70c8ddf627.png

a3fa1e9455e96c5e8b7dc1ee4edd60c9.png

方式二:

在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

785299ba7b5c7d60ab1de6d0750135bd.png

5b0981607757a48fe054f6f98e90abd8.png

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

8228b82551333cd273dcaea57bb9edb8.png

c5d4dd6ca69145cfda5ff6b09a6a7128.png

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

64e6bf6348e1244c3948bea1de8eedc0.png

5f97caa69e5712c03615a53d24a614fc.png

指定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代码

packagecom.selenium;importjava.net.MalformedURLException;importjava.net.URL;importorg.openqa.selenium.By;importorg.openqa.selenium.WebDriver;importorg.openqa.selenium.remote.DesiredCapabilities;importorg.openqa.selenium.remote.RemoteWebDriver;importorg.testng.Assert;importorg.testng.annotations.AfterMethod;importorg.testng.annotations.BeforeTest;importorg.testng.annotations.Test;public classGrid {

WebDriver driver;

@BeforeTestpublic void BeforeTest() throwsMalformedURLException{//创建一个DesiredCapabilities类型

DesiredCapabilities ChromeGrid=DesiredCapabilities.chrome();//实例化一个driver

driver=new RemoteWebDriver(new URL("http://192.168.1.8:5050/wd/hub"),ChromeGrid);

driver.get("https://www.baidu.com/");

}

@Testpublic void gridTest() throwsInterruptedException{

driver.findElement(By.xpath("//*[@id='kw']")).sendKeys("selenium");

driver.findElement(By.xpath("//*[@id='su']")).click();

Thread.sleep(3000);//获取页面上的资源

String sourcetext=driver.getPageSource();//校验搜索结果是否包含 selenium

Assert.assertTrue(sourcetext.contains("selenium"));

Thread.sleep(3000);

}

@AfterMethodpublic voidaftermethod(){

driver.quit();

}

}

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

Java代码:

packagecom.selenium;importjava.net.MalformedURLException;importjava.net.URL;importorg.openqa.selenium.By;importorg.openqa.selenium.WebDriver;importorg.openqa.selenium.WebElement;importorg.openqa.selenium.remote.DesiredCapabilities;importorg.openqa.selenium.remote.RemoteWebDriver;importorg.testng.Assert;import org.testng.annotations.*;public classGridBingFa {

WebDriver driver;

@DataProvider(name="data")publicObject[][] Data(){return newObject[][]{

{"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) throwsInterruptedException, MalformedURLException{

DesiredCapabilities BrowserGrid= null;if(browser.contentEquals("chrome")){

BrowserGrid=DesiredCapabilities.chrome();

}else{

BrowserGrid=DesiredCapabilities.internetExplorer();

}

WebDriver driver=new RemoteWebDriver(newURL(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();//校验搜索结果是否包含 selenium

Assert.assertTrue(sourcetext.contains("selenium"));

Thread.sleep(3000);

driver.quit();

}

}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值