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环境搭建
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;
@BeforeTest
public void BeforeTest() throws MalformedURLException{
//创建一个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/");
} @Test
public 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();
//校验搜索结果是否包含 selenium
Assert.assertTrue(sourcetext.contains("selenium"));
Thread.sleep(3000);
}
@AfterMethod
public 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();
//校验搜索结果是否包含 selenium
Assert.assertTrue(sourcetext.contains("selenium"));
Thread.sleep(3000);
driver.quit();
} }
selenium Grid2环境搭建和基本使用的更多相关文章
- Python+Selenium+webdriver环境搭建(windows)以及相关资源下载链接
今天记录一下测试小菜鸟alter在测试入门的一点关于python+Selenium+webdriver环境搭建的经历以及资源分享.欢迎交流学习,批评指正. 一.Python的下载与安装 1.pytho ...
- 自动化测试基础篇--Selenium Python环境搭建
学习selenium python需要的工具: 1.浏览器 2.Python 3.Selenium 4.FireBug(Firefox) 5.chromedriver.IEDriverServer.g ...
- Selenium Web 自动化 - Selenium(Java)环境搭建
Selenium Web 自动化 - Selenium(Java)环境搭建 2016-07-29 1 下载JDK JDK下载地址:http://www.oracle.com/technetwork/j ...
- 引用 自动化测试基础篇--Selenium Python环境搭建
原文链接:https://www.cnblogs.com/sanzangTst/p/7452922.html 鸣谢参藏法师. 学习selenium python需要的工具: 1.浏览器 2.Pytho ...
- selenium测试环境搭建(一)
selenium测试环境搭建 下载资源 1. selenium-java-2.53.0.zip 下载地址:http://pan.baidu.com/s/1dFDf27Z 2. Firefox Set ...
- 《手把手教你》系列基础篇之(二)-java+ selenium自动化测试-环境搭建(下)基于Maven(详细教程)
1.简介 Apache Maven是一个软件项目管理和综合工具.基于项目对象模型(POM)的概念,Maven可以从一个中心资料片管理项目构建,报告和文件.由于现在企业和公司中Java的大部分项目都是基 ...
- Selenium RC 环境搭建(eclipse)
环境搭建参考:http://seleniumcn.cn/read.php?tid=7962 非常详细!晕乎晕乎了两天,看到这边帖子,终于搭起来了. 关于Selenium RC的原理,还是Seleni ...
- mac下selenium+python环境搭建
selenium2+python的环境搭建主要需要python和selenium 1.python mac下自带了python,可以查看版本.当然可以选择安装其它版本的python. 2.seleni ...
- 基于python的selenium自动化测试环境搭建
Windows下的环境搭建: 1.安装python2.7.152.cmd里敲pip install selenium3.安装firefox47.geckodriver11(并将geckodriver. ...
随机推荐
- Mockito 2 关于打标(stubbing)
请参考下面有关于打标的代码. //You can mock concrete classes, not just interfaces LinkedList mockedList = mock(Lin ...
- BOM基础笔记
BOM基础 BOM对浏览器的一些操作 1.打开.关闭窗口 •open –蓝色理想运行代码功能 window.open('http://www.baidu.com/', '_self'); <!d ...
- 使用Hexo和Github搭建博客站
本人电脑系统为window 10专业工作站版,64位 相关步骤: 1.安装Node.js和配置好Node.js环境,打开cmd命令行,成功界面如下 2.安装Git和配置好Git环境,安装成功的象征就是 ...
- Python3 日期与时间戳互相转换(函数可调用)
一.前言 在开发中,我们经常会遇到时间戳转换日期,或者日期转换为时间戳: 日期格式:2019-08-01 00:00:00 时间戳格式:1564588800 关于时间戳 Unix时间戳(Unix ti ...
- Redis5.0 3台主机三主三从部署Cluster集群
1.下载安装 [root@ip101 redis-5.0.4]# pwd /opt/app/redis-5.0.4 [root@ip101 redis-5.0.4]# ls 00-RELEASENOT ...
- [常用的Cmd运行命令]
打开命令提示符,有很多与系统有关的命令都可以在命令提示符中完成,比如输入ipconfig查看电脑的IP osk 打开屏幕键盘 calc 打开计算器的功能 notepad 打开记事本 mspaint ...
- python - 技术提高要点之一,函数式编程,性能,测试和编码规范
摘自:http://www.cnblogs.com/kaituorensheng/p/4516983.html 函数式编程 命令式的编程风格已经成为事实上的标准.命令式编程的程序是由一些描述状态转变的 ...
- user_tab_columns和user_col_comments区别
SELECT USER_TAB_COLUMNS.COLUMN_NAME, USER_COL_COMMENTS.COMMENTS, CASE WHEN INSTR(USER_TAB_COLUMNS.DA ...
- [笔记] Ubuntu机器添加新硬盘安装流程
SSD虽然快,但是容量不够用,买了块希捷4TB的机械硬盘,准备给台机扩容. 安装环境 OS: Ubuntu 18.04 安装新硬盘 问了客服,原来这款机箱已经带了硬盘滑槽,不需要固定螺钉了. 买了SA ...
- iOS实现渐变颜色
下面是我的两种实现: 1.直接图片展示,注意图片的变形问题; 2.用CAGradientLayer渐变颜色实现; 代码如下: // // ViewController.m // ImageStrenc ...