Selenium的基本使用,已经介绍得差不多了,今天来简单说说RemoteWebDriver与Grid,也是本系列的最后一篇。

  还记得本系列第一章(Selenium简介与环境搭配)的配置中,提到我们下载的 selenium-server-standalone-3.9.1.jar 并非是必要的。那什么时候需要用到呢?就是本文说的,当我们要用到远程测试(RemoteWebDriver)与并行测试(Grid)的时候,才会用到该文件,并且该文件只需放到服务器端,客户端并不需要。当然,为了方便测试,你也可以使用同一台电脑既当服务器,也当客户端。

  首先这里要说一下,这里说的远程测试是指,利用远程服务器的webdriver进行测试,即代码是在客户端,但被传送到服务器端执行,服务器端启动的是自己的webdriver。例如,我们客户端只安装了chromedriver,服务端安装了firefoxdriver,我们想测试一下项目在firefox下的表现,就可以使用服务器端进行测试。我们在客户端写的代码基本一样,因为我们客户端通常用的driver都是:ChromeDriverEdgeDriverFirefoxDriverInternetExplorerDriverOperaDriverSafariDriver,而他们都继承自 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快速入门(十五)的更多相关文章

  1. Selenium下拉菜单(Select)的操作-----Selenium快速入门(五)

    对于一般元素的操作,我们只要掌握本系列的第二,三章即可大致足够.对于下拉菜单(Select)的操作,Selenium有专门的类Select进行处理.文档地址为:http://seleniumhq.gi ...

  2. 元素(WebElement)-----Selenium快速入门(三)

    上一篇<元素定位-----Selenium快速入门(二)>说了,如何定位元素,本篇说说找到的元素(WebElement)该怎么用. WebElement常用方法:  返回值  方法名  说 ...

  3. Kotlin新语言简介和快速入门知识点

    Kotlin新语言简介和快速入门知识点 简介:Kotlin是最近由JetBrains发布的一种基于JVM的编程语言,已经被Google宣布为开发Android App的一级语言Kotlin有着与Jav ...

  4. 隐式等待-----Selenium快速入门(九)

    有时候,网页未加载完成,或加载失败,但是我们后续的代码就已经开始查找页面上的元素了,这通常将导致查找元素失败.在本系列Selenium窗口切换-----Selenium快速入门(六)中,我们就已经出现 ...

  5. SpringBoot简介与快速入门

    一.SpringBoot简介 1.1 原有Spring优缺点分析 1.1.1 Spring的优点分析 Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE ...

  6. [SQL]SQL语言入门级教材_SQL语言快速入门(五)

    SQL语言快速入门(一) SQL是英文Structured Query Language的缩写,意思为结构化查询语言. SQL语言的主要功能就是同各种数据库建立联系,进行沟通.按照ANSI(美国国家标 ...

  7. ELK快速入门(五)配置nginx代理kibana

    ELK快速入门五-配置nginx代理kibana 由于kibana界面默认没有安全认证界面,为了保证安全,通过nginx进行代理并设置访问认证. 配置kibana [root@linux-elk1 ~ ...

  8. Selenium简介与环境搭配-----Selenium快速入门(一)

    Selenium是一套自动化测试框架.官方网站是:https://www.seleniumhq.org/  某些童鞋访问可能需要FQ. Selenium支持多种语言开发,例如Java,Python,C ...

  9. driver.get()和driver.navigate().to()到底有什么不同?-----Selenium快速入门(四)

    大家都知道,这两个方法都是跳转到指定的url地址,那么这两个方法有什么不同呢?遇到这种情况,第一反应就是查查官方的文档. 官方文档的说法是:Load a new web page in the cur ...

随机推荐

  1. iOS 各种方法

    tableViewCell分割线左对齐: - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)c ...

  2. swift 约束 - SnapKit 适配iPhoneX 安全区 和苹果自带的VFL ,auto layout 安全区适配

    这里tableview 是从最顶上的安全区适配的, nextBtn是最下边从安全区设置的,如果是在中间的view还是原来的写法,看2 1.安全区适配适用于Vc里面, 如果是自定义的view或封装的vi ...

  3. Python学习记录day7

    目录 Python学习记录day7 1. 面向过程 VS 面向对象 编程范式 2. 面向对象特性 3. 类的定义.构造函数和公有属性 4. 类的析构函数 5. 类的继承 6. 经典类vs新式类 7. ...

  4. Fragment----静态创建碎片

    import android.os.Bundle; import android.app.Activity; import android.app.Fragment; import android.a ...

  5. linux 下 php 安装 event

    1.下载event源码包 https://pecl.php.net/package/event 如:event-2.0.4.tgz 2.解压 > tar zxvf event-2.0.4.tgz ...

  6. php多进程中的阻塞与非阻塞

    我们通过pcntl_fork来创建子进程,使用pcntl_wait和pcntl_waitpid来回收子进程. 子进程退出后,父进程没有及时回收,就会产生僵尸进程.   例1: <?php def ...

  7. 禁用xampp的ssl功能

    按照Disable SSL on XAMPP for Windows文章里讲解的步骤如下: 1 以管理员身份启动XAMPP控制面板,点击Config按钮打开httpd.conf 分别注释171,539 ...

  8. PAT 1074 宇宙无敌加法器(20)(代码+思路+测试点分析)

    1074 宇宙无敌加法器(20 分)提问 地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的.而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为"P ...

  9. APP UI结构-首页功能点大集锦,很干很详细

    APP UI结构的系列的文章有一段时间没有更新了,因为最近在学一些新东西和看一些新书籍,适当的给自己充电也是为了更好的输出,言归正传,今天想跟大家聊的是和首页相关的一些内容,可能有些内容最近有的小伙伴 ...

  10. 带你认识那些App可靠性设计

    可靠性是软件一个重要的质量属性,它关注的是软件功能持续的可用性,以及出现故障之后是否能够容错,是否能快速的恢复使用. 可靠性六条基本准则 1.故障应在第一时间被检测和感知: 2.能避免的故障都不应该发 ...