一、Selenium Grid介绍

1、概念

Selenium Grid组件专门用于远程分布式测试或并发测试,通过并发执行测试用例的方式可以提高测试用例的执行速度和效率,解决界面自动化测试执行速度过慢的问题

2、可以怎么做

使用此组件可以在一台计算机上给多台计算机(不同操作系统和不同版本浏览器环境)分发多个测试用例从而并发执行,大大提高了测试用例执行效率,基本满足大型项目自动化测试的时限要求和兼容性要求

3、版本

1.0版本

2.0版本,最多可以远程控制5个浏览器

4、工作模式

  Selenium Grid使用Hub和Node模式,一台计算机作为Hub(管理中心)管理其他多个Node(节点)计算机,Hub负责将测试用例分发给多台Node计算机执行,并收集多台Node计算机执行结果的报告,汇总后提交一份总的测试报告

4.1、Hub

1.在分布式测试模式中,只有一台作为Hub的计算机

2.Hub负责管理测试脚本,并负责发送脚本给其他Node节点。

3.所有的Node节点计算机必须先在作为Hub的计算机中进行注册,注册成功后再和Hub计算机通信,Node节点计算机会告知Hub自己的相关信息,例如,Node节点的操作系统和浏览器的相关版本

4.Hub计算机可以给自己分配执行测试用例的任务

5.Hub计算机分发的测试用例任务会在各个Node计算机节点执行

4.2、Node

1.在分布式测试模式中,可以有一个或者多个Node节点

2.Node节点会打开本地的浏览器完成测试任务并返回测试结果给Hub

3.Node节点的操作系统和浏览器版本无需和Hub保持一致

4.在Node节点上可以同时打开多个浏览器并行执行测试任务

二、Selenium Grid使用方法

2.1、测试环境准备

1、下载JDK 1.8,安装bin并配置环境变量

2、Hub计算机和Node计算机均访问 http://www.seleniumhq.org/download

下载‘Selenium Standalone Server’中的jar文件  selenium-server-standalone-x.xxx.xx.jar

3、Hub计算机上打开CMD窗口,将当前工作目录切换到 jar文件所在目录,执行:java -jar selenium-server-standalone-3.141.59.jar -role hub

(-role hub:启动一个Hub服务,作为分布式管理中心,等待WebDriver客户端进行注册和请求,默认接收注册地址为 http://localhost:4444/grid/register,默认启动该端口为4444)

4、在Hub计算机的Firefox浏览器访问 http://localhost:4444/grid/console,如果访问的网页中显示‘view config’的链接,表示可以访问次网站。讲locahost换成本机的真实ip依然可以正常访问

CMD -- ipconfig 查看IP地址。

localhost 换成IP地址名称(可不做)

5、Node计算机中打开CMD窗口,将当前工作目录切换到 jar文件所在目录,执行:java -jar selenium-server-standalone-3.141.59.jar -role webdriver -hub http://localhost:4444/grid/register -port 6655 -browser browserName='chrome'(或:browserName='firefox' 或-browser browserName='ie')

(1)role:参数值webdriver表示Node(节点)的名字

(2)hub:参数值表示管理中心的URL地址,Node会链接这个地址进行节点注册

(3)port:参数值表示Node节点服务的端口号为6655,建议使用大于5000的端口号

6、再次访问 http://localhost:4444/grid/console,验证Node节点是否已在Hub上注册成功,注册成功如图所示。
从此页面可以获取到节点计算机允许不同种类的浏览器打开多少个实例,验证节点计算机执行命令行的正确性。

2.2、编写分布式执行的测试脚本

1、使用chrome浏览器访问百度首页,输入关键字‘selenium’进行搜索,验证搜索结果的页面源码中包含'selenium'关键字。

2、执行脚本,Node计算机会自动启动chrome浏览器执行测试脚本,执行完毕后在Hub计算机上可以看到自动化测试的执行结果。

Selenium3+python自动化016-Selenium Grid的更多相关文章

  1. selenium3+python自动化50-环境搭建(firefox)

    前言 有不少小伙伴在安装selenium环境后启动firefox报错,因为现在selenium升级到3.0了,跟2.0的版本还有有一点区别的. 安装环境过程中主要会遇到三个坑: 1.'geckodri ...

  2. selenium3+python自动化50-环境搭建(firefox)【转载】

    前言 有不少小伙伴在安装selenium环境后启动firefox报错,因为现在selenium升级到3.0了,跟2.0的版本还有有一点区别的. 安装环境过程中主要会遇到三个坑: 1.'geckodri ...

  3. web端自动化——Selenium3+python自动化(3.7版本)-chrome67环境搭建

    前言 目前selenium版本已经升级到3.0了,网上的大部分教程是基于2.0写的,所以在学习前先要弄清楚版本号,这点非常重要.本系列依然以selenium3为基础. 一.selenium简介 Sel ...

  4. Selenium3+python自动化006-环境搭建

    一.selenium简介 1.Selenium历史 (1)Selenium 1.0: Selenium IDE      Selenium Grid    Selenium RC(核心功能) Sele ...

  5. web端自动化——Selenium3+python自动化(3.7版本)-火狐62版本环境搭建

    前言 目前selenium版本已经升级到3.0了,网上的大部分教程是基于2.0写的,所以在学习前先要弄清楚版本号,这点非常重要.本系列依然以selenium3为基础. 一.selenium简介 Sel ...

  6. Selenium3+python自动化010-UnitTest框架简介和单元测试框架使用

    一.UnitTest介绍 unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过, ...

  7. Selenium3+python自动化006+自动化测试概述

    自动化测试概述 1.自动化分类: (1)单元测试自动化: 单元测试(Unit):模拟各种异常场景,外部依赖较少,且可以做测试单元到最小的一种测试方法. Java单元测试框架Junit.TestNG; ...

  8. selenium+python自动化105 - selenium 如何在已打开的浏览器上继续运行自动化脚本?

    前言 使用selenium 做web自动化的时候,经常会遇到这样一种需求,是否可以在已经打开的浏览器基础上继续运行自动化脚本? 这样前面的验证码登录可以手工点过去,后面页面使用脚本继续执行,这样可以解 ...

  9. Python自动化测试之selenium从入门到精通

    1. 安装selenium 首先确保python安装成功,输入python -V 在windows下使用pip安装selenium,详情如图所示: 在ubuntu下使用pip install sele ...

随机推荐

  1. PHP 中 new static 和 new self 的区别

            今天老大在公司 问了一下  new static  和 new self 的区别 公司十个程序 竟然没有一个回答上来 后面画面自补 ... 本屌丝回家后 就百度了解了下 这二者区别 : ...

  2. oneweb and starlink

    2019.7.16,一网在首尔开展在轨测试,最高速度400Mbps,延时32ms:地面终端由韩国Intellian生产. https://www.oneweb.world/media-center/o ...

  3. coat 彩色的cat

    # 和cat类似,但每一行一种颜色,方便查看 curl -o coat https://raw.githubusercontent.com/oldratlee/useful-scripts/maste ...

  4. Quartz.NET - 课程 6: Cron 触发器

    译者注: 目录在这 [译]Quartz.NET 3.x 教程 原文在这 Lesson 6: CronTrigger 如果你需要一个类似日历概念而不是像 SimpleTrigger 那样指定间隔来调度作 ...

  5. MySQL中的索引、左连接、右连接、join、sql执行顺序

    逻辑架构: 1.连接层 2.服务层 3.引擎层(插拔式) 4.存储层 存储引擎: 常用的有:MyISAM.InnoDB 查看命令:show variables like '%storage_engin ...

  6. printf函数中*修饰符的作用,如:%*d

    在printf函数中,我们可以用数字修饰来控制打印的字段宽度和精度,如下(为强调视觉效果,均填充0): #include <stdio.h> int main() { ; float f= ...

  7. ABP框架迁移到Mysql

    ABP框架 .NetCore3.x版本 1.首先找到xxx.Core 项目,添加引用Microsoft.EntityFrameworkCore.Tools 2.找到xxx.EntityFramewor ...

  8. DotNet 源码学习——QUEUE

    1.Queue声明创建对象.(Queue为泛型对象.) public class Queue<T> :IEnumerable<T>,System.Collections.ICo ...

  9. 「Flink」Flink的状态管理与容错

    在Flink中的每个函数和运算符都是有状态的.在处理过程中可以用状态来存储数据,这样可以利用状态来构建复杂操作.为了让状态容错,Flink需要设置checkpoint状态.Flink程序是通过chec ...

  10. C++中static关键字的用法

    运行一个完整的程序.我们可将整个存储区分为四块: (1)栈区:就比如局部变量,对应的函数参数等这些,调用完之后相应的内存会自己释放掉,很让人省心. (2)堆区:堆来堆去的.得要人动手.所以得我们自己手 ...