selenium grid的使用与配置
一、selenium grid的组成与作用:由一个集线器hub和多个客户机node组成,如果你的程序需要在不用的浏览器,不同的操作系统上测试,而且比较多的case需要多线程远程执行,那么一个比较好的测试方案就是使用 selenium grid,hub用来管理各个代理节点的注册和状态信息,并且接受远程客户端代码的请求调用,然后把请求的命令再转发给代理节点来执行。
其结构组成:
二、准备工作:hub集线器上安装jdk,selenium-server-standalone-xxx.jar,准备好各浏览器的驱动(主要是chromedriver和iedriver)
node节点上也需要安装jdk,selenium-server-standalone-xxx.jar,准备好各浏览器的驱动(主要是chromedriver和iedriver)
三、启动hub节点(在你使用的hub集线器机器上执行命令):java -jar selenium-server-standalone-2.53.0.jar -role hub (hub启动命令可做成bat文件,方便维护与使用)
其默认监听端口4444,默认IP是localhost 如果要修改,只需要加-port 参数和-Hubhost
例如:java -jar selenium-server-standalone-2.53.0.jar -role hub -port 1234 -Hubhost 192.168.1.30
四、启动node节点(在你使用的node节点机器上执行命令,也可以在hub集线器机器上执行,即把hub集线器当成node节点):java -jar selenium-server-standalone-2.53.0.jar -role node -hub http://hub集线器的ip:4444/grid/register -Dwebdriver.chrome.driver=chromedriver.exe -browser browserName=chrome(这里指定了要启动的浏览器和对应的浏览器驱动,node启动命令可做成bat文件,方便维护与使用)
其默认监听端口5555,如果要修改,只需要加-port 参数
例如:java -jar selenium-server-standalone-2.53.0.jar -role node -port 6666 -hub http://hub集线器的ip:4444/grid/register -Dwebdriver.chrome.driver=chromedriver.exe -browser browserName=chrome(这里指定了要启动的浏览器和对应的浏览器驱动)
node节点的启动参数也可以做成json文件,json文件内容如下(文件名随意取,我这里的文件名为:node.json):
{ "capabilities":[{ "browserName": "chrome", "maxInstances": 6, "platform": "WINDOWS", "version":"52.0.2743.82 m","webdriver.chrome.driver":"chromedriver.exe" }], "configuration": { "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy", "maxSession": 5, "port": 5555, "register": true, "registerCycle": 5000, "hub": "http://192.168.1.36:4444" } }
执行配置文件node.json:java -jar selenium-server-standalone-2.53.0.jar -role node -hub http://hub集线器的ip:4444/grid/register -nodeConfig node.json,这个跟直接使用命令行是同样的效果,随个人喜好
现在hub集线器和node节点都已经启动完毕了,意味着hub集线器已经完全控制了node节点,开始编写脚本
public void setUpDriver() throws MalformedURLException{
ChromeOptions options = new ChromeOptions();
//加载chrome浏览器的配置文件,比如插件,下载设置等,个人建议先在浏览器中设置好,不要把浏览器的一些参数写在脚本里,做些无用工,也不会显得你很牛逼
options.addArguments("user-data-dir=C:\\Users\\Administrator\\AppData\\Local\\Google\\Chrome\\User Data");
//启动chrome浏览器
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
//将配置文件加载到chrome浏览器中
capabilities.setCapability(ChromeOptions.CAPABILITY,options);
//capabilities.setCapability("chromeOptions", options);
//启动远程的node节点,注意:URL地址一定要写你的node节点的地址,端口号为你指定的端口号,若没有修改,则就是默认的5555,若修改了,就用你自己修改过后的端口号
driver = new RemoteWebDriver(new URL("http://node节点的ip:5555/wd/hub"), capabilities);
//打开百度主页
driver.get("http://www.baidu.com");
}
selenium grid的使用与配置的更多相关文章
- Selenium Grid的原理、配置与使用(转)
Selenium GridSelenium Grid在前面介绍Selenium的时候说过它有三大组件,Selenium Grid就是其中之一而作用就是分布式执行测试.讲分布式之前还是要说说UI自动化的 ...
- 搭建selenium grid简单配置
1.使用selenium提供的服务端独立jar包 :服务端.客户端都是运行于java7环境. 2.启动hub: hub配置文件如下: Java -jar selenium-server-standal ...
- 转:Selenium Grid+JAVA +Windows 配置(Selenium 2.0)
Selenium-Grid 允许你在多台机器的多个浏览器上并行的进行测试,也就是说,你可以同时运行多个测试.本质上来说就是,Selenium-Grid 支持分布式的测试执行.它可以让你的测试在一个分布 ...
- 配置selenium grid
本文对Selenium Grid进行了完整的介绍,从环境准备到使用Selenium Grid进行一次完整的多节点分布式测试. 运行环境为Windows 10,Selenium版本为 3.5.0,Chr ...
- Python+Selenium笔记(十一):配置selenium Grid
(一) 前言 Selenium Grid可以将测试分布在若干个物理或虚拟机器上,从而实现分布方式或并行方式执行测试. 这个链接是官方的相关说明. https://github.com/Selenium ...
- Robot Framework + Selenium2Library环境下,结合Selenium Grid实施分布式自动化测试
最近一段时间,公司在推行自动化测试流程,本人有幸参与了自定义通用控件的关键字封装和脚本辅助编写.数据驱动管理.测试用例执行管理等一系列工具软件的研发工作,积累了一些经验,在此与大家做一下分享,也算是做 ...
- Selenium Grid 运行报错 Exception thrown in Navigator.Start first time ->Error forwarding the new session Empty pool of VM for setup Capabilities
Selenium Grid 运行报错 : Exception thrown in Navigator.Start first time ->Error forwarding the new se ...
- selenium Grid(一)
selenium grid Quick Start selenium-grid是用于设计帮助我们进行分布式测试的工具,其整个结构是由一个hub节点和若干个代理节点组成.hub用来管理各个代理节点的注册 ...
- selenium Grid
Selenium Grid 的机制是启动一个 hub,然后启动多个 Selenium RC 注册到 hub 上, 当测试请求到 hub 时,hub 会将测试分发给 Selenium RC, Selen ...
随机推荐
- DNS解析详细过程
英文:domain name system. 中文:域名系统. 解析过程: 第一次请求站点(例:http://www.baidu.com),先在当前浏览器路径下寻找有没有缓存对应的解析结果,如果有的话 ...
- 创建基本的2D场景(part1)
通过一个简单的2D游戏案例来学习unity 2D游戏开发,本文分为以下3个部分. · 创建工作层 · 添加静态景物 · 制作2D动画 通过这个案例,我们可以学习到unity2D游戏制作的基本流程,Sp ...
- 使用 Rx 中预定义的 Subject
看到一幅有趣的关于 Rx 学习的图,想知道学习 Rx 的学习曲线?不,是峭壁! 我们可以直接通过 Rx 的 Observer 来创建 Observable 对象. 但是,使用这种方式往往比较复杂,在特 ...
- [ios2]BaaS服务收藏 【转】
首先,什么是BaaS服务: BaaS(后端即服务:Backend as a Service)公司为移动应用开发者提供整合云后端的边界服务.SaaS(软件即服务:Software as a Servic ...
- Testlink1.9.14介绍及使用
Testlink简介 今天在为部门培训testlink的使用,顺便把相关片段记录下来. TestLink是一款开源的测试管理工具,主要用于进行测试过程的管理,通过使用TestLink提供的功能,可以 ...
- TypeScript开发ReactNative之fetch函数的提示问题
使用TypeScript开发ReactNative时,发现在类中调用 fetch 函数时IDE可能会提示找不到,无法加载,特别是当类中存在同名的 fetch 成员方法时更是郁闷了,虽然程序是可以执行的 ...
- 一名测试初学者听JAVA视频笔记(一)
搭建pho开发环境与框架图 韩顺平 第一章: No1 关于文件以及文件夹的管理 将生成的文本文档做成详细信息的形式,显示文件修改时间以及文件大小,便于文件查看和管理,也是对于一名IT人士高效能工作的 ...
- ECMAScript6之let与const关键字
let关键字 let关键字和var关键字一样,都是用来声明变量的,但是和var不同的是,let关键字声明的变量仅在自己的块级作用域范围内发挥作用. 我们来比较下面两段代码 var arr = new ...
- 项目中dubbo的使用
导语:Dubbo是阿里巴巴的一个分布式服务的开源框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000 ...
- SAP HANA中创建分析权限(Analytic Privilege)
Demo Instruction: 假定CustomerID > 100的为VIP客户,我们的权限设置为只显示VIP客户 所使用的Attribute View: ATTR_CUSTOMER_FU ...