终结篇:RemoteWebDriver与Grid简介-----Selenium快速入门(十五)
Selenium的基本使用,已经介绍得差不多了,今天来简单说说RemoteWebDriver与Grid,也是本系列的最后一篇。
还记得本系列第一章(Selenium简介与环境搭配)的配置中,提到我们下载的 selenium-server-standalone-3.9.1.jar 并非是必要的。那什么时候需要用到呢?就是本文说的,当我们要用到远程测试(RemoteWebDriver)与并行测试(Grid)的时候,才会用到该文件,并且该文件只需放到服务器端,客户端并不需要。当然,为了方便测试,你也可以使用同一台电脑既当服务器,也当客户端。
首先这里要说一下,这里说的远程测试是指,利用远程服务器的webdriver进行测试,即代码是在客户端,但被传送到服务器端执行,服务器端启动的是自己的webdriver。例如,我们客户端只安装了chromedriver,服务端安装了firefoxdriver,我们想测试一下项目在firefox下的表现,就可以使用服务器端进行测试。我们在客户端写的代码基本一样,因为我们客户端通常用的driver都是:ChromeDriver, EdgeDriver, FirefoxDriver, InternetExplorerDriver, OperaDriver, SafariDriver,而他们都继承自 RemoteWebServer,所以,实际上我们客户端的很多代码,都是直接继承自RemoteWebServer的,不同的最重要一点就是声明方式,RemoteWebServer需要指定远程服务器的IP地址或域名。
//客户端driver声明方式
System.setProperty("webdriver.chrome.driver", "D:/WorkSpace/SeleniumTest/tools/chromedriver.exe");
WebDriver driver=new ChromeDriver(); //RemoteWebDriver声明方式
RemoteWebDriver driver=new RemoteWebDriver(new URL("http://192.168.1.107:4444/wd/hub"), DesiredCapabilities.chrome());
下面说说RemoteWebServer的用法。
首先说说配置,为了清楚说明,我用VirtualBox虚拟了win7,然后先安装JDK,安装最新版的chrome,将chromedriver.exe复制到C:\Windows下,将selenium-server-standalone-3.9.1.jar复制到C盘下,启动命令行,输入以下命令:java -jar c:\selenium-server-standalone-3.9.1.jar
这样,selenium server就启动成功了。

我们在项目中,输入以下代码并执行:
//RemoteWebDriver声明
RemoteWebDriver driver=new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), DesiredCapabilities.chrome()); driver.get("http://www.baidu.com"); System.out.print(driver.getTitle());
执行后再看看命令行,效果如下:

可以看到,代码确实在服务器端执行了,服务器端也确确实实的启动了chrome,返回了百度的标题。而使用RemoteWebDriver与我们之前使用的webdriver的代码基本是大同小异的。
那么,Grid又是什么呢?Grid其实是一种并行测试工具,可以同时在不同机器,不同系统,不同浏览器上进行测试,其最大的目的就是节省测试的时间。Grid包含至少一个hub和一个node,hub和node是什么东西呢,你可以简单理解为hub是文件夹,node是文件,hub下可以有很多node,而每个node其实就是我们测试环境的配置。例如,我们要在linux下,测试firefox,那么我们可以注册一个node,指定平台,浏览器,浏览器版本等。而注册可以通过命令行,又或者是自己编辑json配置文件,然后一次加载。
那么,要并行测试,我们的代码应该怎么写呢,其实,大部分代码还是一样,不同的只是driver的声明和配置。
DesiredCapabilities firefoxCap=DesiredCapabilities.firefox();
//设置浏览器名
firefoxCap.setBrowserName("firefox");
//设置版本
firefoxCap.setVersion("46");
//设置平台
firefoxCap.setPlatform(Platform.LINUX);
//该测试用例,将会被hub分配到符合cap设置的三个条件的node
RemoteWebDriver driver=new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), firefoxCap);
可见,后面的RemoteWebDriver也好,Grid也好,只要我们掌握了前面所说的基本用法,也就掌握了他们的用法,只是声明方式略有不同而已。本节只是简单介绍,更详细的介绍可以查看官网:https://docs.seleniumhq.org/docs/07_selenium_grid.jsp
至此,本系列暂告一段落。
终结篇:RemoteWebDriver与Grid简介-----Selenium快速入门(十五)的更多相关文章
- Selenium下拉菜单(Select)的操作-----Selenium快速入门(五)
对于一般元素的操作,我们只要掌握本系列的第二,三章即可大致足够.对于下拉菜单(Select)的操作,Selenium有专门的类Select进行处理.文档地址为:http://seleniumhq.gi ...
- 元素(WebElement)-----Selenium快速入门(三)
上一篇<元素定位-----Selenium快速入门(二)>说了,如何定位元素,本篇说说找到的元素(WebElement)该怎么用. WebElement常用方法: 返回值 方法名 说 ...
- Kotlin新语言简介和快速入门知识点
Kotlin新语言简介和快速入门知识点 简介:Kotlin是最近由JetBrains发布的一种基于JVM的编程语言,已经被Google宣布为开发Android App的一级语言Kotlin有着与Jav ...
- 隐式等待-----Selenium快速入门(九)
有时候,网页未加载完成,或加载失败,但是我们后续的代码就已经开始查找页面上的元素了,这通常将导致查找元素失败.在本系列Selenium窗口切换-----Selenium快速入门(六)中,我们就已经出现 ...
- SpringBoot简介与快速入门
一.SpringBoot简介 1.1 原有Spring优缺点分析 1.1.1 Spring的优点分析 Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE ...
- [SQL]SQL语言入门级教材_SQL语言快速入门(五)
SQL语言快速入门(一) SQL是英文Structured Query Language的缩写,意思为结构化查询语言. SQL语言的主要功能就是同各种数据库建立联系,进行沟通.按照ANSI(美国国家标 ...
- ELK快速入门(五)配置nginx代理kibana
ELK快速入门五-配置nginx代理kibana 由于kibana界面默认没有安全认证界面,为了保证安全,通过nginx进行代理并设置访问认证. 配置kibana [root@linux-elk1 ~ ...
- Selenium简介与环境搭配-----Selenium快速入门(一)
Selenium是一套自动化测试框架.官方网站是:https://www.seleniumhq.org/ 某些童鞋访问可能需要FQ. Selenium支持多种语言开发,例如Java,Python,C ...
- driver.get()和driver.navigate().to()到底有什么不同?-----Selenium快速入门(四)
大家都知道,这两个方法都是跳转到指定的url地址,那么这两个方法有什么不同呢?遇到这种情况,第一反应就是查查官方的文档. 官方文档的说法是:Load a new web page in the cur ...
随机推荐
- rubber
rubber - 必应词典 美['rʌbər]英['rʌbə(r)] n.橡胶:橡皮:黑板擦 v.涂橡胶于…:〈美俚〉同“rubberneck” 网络橡皮擦:胶皮:橡皮轮胎 变形复数:rubbers:
- c++中Socket编程(入门)
转载 :http://www.cnblogs.com/L-hq815/archive/2012/07/09/2583043.html 但该作者也是转载,国外网站翻译之作 本人在学习Socket编程时, ...
- boost x64 lib
libboost_atomic-vc150-mt-gd-x64-1_66.liblibboost_atomic-vc150-mt-s-x64-1_66.liblibboost_atomic-vc150 ...
- IBM关闭触摸板的方法
开始按Enter进入BIOS > Configure > Keyboard/Mouse > TouchPad,设置为DisabledF10保存退出
- EF6.0新特性-DbCommandInterceptor实现非SQL端读写分离
前几天看了一个基于sqlserver的负载均衡与读写分离的软件Moebius,实现的方式还是不错的,这使得用sqlserver数据库的同学时有机会对数据库进行更有效的优化了
- 64bits access
http://www.codicode.com/art/64_bit_version_of_microsoft_jet.aspx
- Golang之http编程
Go原生支持http.import("net/http") Go的http服务性能和nginx比较接近 几行代码就可以实现一个web服务 服务端http package main ...
- QFileInfo
https://www.cnblogs.com/findumars/p/10247573.html
- 自然语言处理--中文文本向量化counterVectorizer()
1.载入文档 #!/usr/bin/python # -*- coding: utf-8 -*- import pandas as pd import re import jieba from skl ...
- 2018.08.05 bzoj3223: Tyvj 1729 文艺平衡树(非旋treap)
传送门 经典的平衡树问题,之前已经用splay写过一次了,今天我突发奇想,写了一发非旋treap的版本,发现挺好写的(虽然跑不过splay). 代码: #include<bits/stdc++. ...