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. 132. Palindrome Partitioning II (String; DP)

    Given a string s, partition s such that every substring of the partition is a palindrome. Return the ...

  2. 关于swift语言中导入OC三方类找不到头文件的解决方法

    首先我遇到的问题是这样的: 我之前封装的OC类,我导入现在的swift工程中,然后建立桥接文件,在Swift的控制器中可以找到这个OC写的东西. 但是问题来了,当你使用cocoapods导入的OC三方 ...

  3. sqlserver数据库维护常用sql

    1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- 创建 备份 ...

  4. css布局---各种居中

    居中是我们使用css来布局时常遇到的情况.使用css来进行居中时,有时一个属性就能搞定,有时则需要一定的技巧才能兼容到所有浏览器,本文就居中的一些常用方法做个简单的介绍. 注:本文所讲方法除了特别说明 ...

  5. ASP.NET MVC HtmlHelper 默认值

    例如: @Html.HiddenFor(m=>m.IsMating,new { Value="True"}) 注意:value属性的首字母要用大写.

  6. No handlers could be found for logger “apscheduler.executors.default”?

    Call logging.basicConfig() before instantiating the scheduler. That lets you see what the real probl ...

  7. 面向对象设计模式纵横谈:Prototype 原型模式(笔记记录)

       有一段时间没写东西了,今天继续把没写完的设计模式写完,今天这堂课是创建型设计模式的最后一堂课,原型设计模式,它同样也是解决了对象在创建的过程中的解耦合的情况,面对变化使代码更稳定,更准确的说是使 ...

  8. 白盒静态自动化测试工具:FindBugs使用指南

    目 录     1     FINDBUGS介绍     2     在ECLIPSE中安装FINDBUGS插件     3     在ECLIPSE中使用FINDBUGS操作步骤     3.1   ...

  9. Spring AOP配置

    相关概念有点拗口,我这里简单总结一个,切面,决定做什么,写处理逻辑,比如打日志.切入点,决定在哪些方里拦截,一般填正则表达式查询. 通知,就是连接切面和切入点的桥梁. 其中遇到了配置好,启动服务器没报 ...

  10. AMD、CMD、UMD 模块的写法

    简介 最近几年,我们可以选择的Javascript组件的生态系统一直在稳步增长.虽然陡增的选择范围是极好的,但当组件混合匹配使用时就会出现很尴尬的局面.开发新手们会很快发现不是所有组件都能彼此“和平相 ...