在生产环境,QA会同时跑几十个上百个的test case。如果用单机串行的话,是一件非常耗时的事情,估计比手点快不了多少。使用并行方案的话,有两种方法,一个是自己写并行框架,一个是用现成的Selenium Grid。

自己写并行框架,好处是一切尽在掌控,有问题可以快速定位,针对业务的定制化程度高,用户用起来方便。目前想到的问题是,如果在单机多账户登录同一系统的情况下,会不会串cookie?不过我发现,可能是浏览器厂商把不同的Driver实例给隔离了,这样就省很多事。实现思路大体是:各Client(测试脚本的解析器)向MQ队列发送TestCase消息,多个执行器监听同一队列消费消息,执行测试用例,再返回结果。

由于自己偷懒,这里先用现成的Selenium Grid来做并行。SeleniumGrid是一个集群,有一个中心节点,称为hub;多个执行节点,称为node。其中,Hub的职责是管理各Node节点(如节点信息、是否Alive)、与Client建立连接、向各Node发送执行命令。 Client与Hub的分界点在Driver这儿。即Selenium脚本还是在Client上跑,但是控制的Driver是在Grid里面。(这其实跟自己写并行框架的边界划分已经不同了)。下面就入个门,介绍一下安装、运行、Helloworld(哦,应该是Hello baidu...)

1. 下载:

  1.Selenium Standalone Server: http://www.seleniumhq.org/download/

  

  2.各种Driver。在www.seleniumhq.org/download也能找到入口。

  

  ChromeDriver可以直接访问:https://sites.google.com/a/chromium.org/chromedriver/

2. 安装:

  1. 找两台机器,虚拟机也可以。我这里用的是A:10.189.1.206,B:10.189.1.201。A作为Hub,B作为Node

  2. 安装Hub:把下载的selenium-server-standalone-3.5.2.jar 放在在A机器上,运行命令:

java -jar selenium-server-standalone-3.5.2.jar -role hub

  

  3. 安装Node:同样,把下载的selenium-server-standalone-3.5.2.jar 放在在B机器上,运行命令:

  java -jar selenium-server-standalone-3.5.2.jar -role node -port 6666 -hub http://10.189.1.206:4444/grid/register

  这里必须要指定Hub的地址,端口号(port)可以设定,也可以不管。执行完后,Hub的界面如下,表示Hub已经接受了Node的注册:

  

  可以访问整个Grid的控制台:http://10.189.1.206:4444/grid/console/

  

  4. 在Hub和Node上安装ChromeDriver:

    把下载的chromedriver.exe复制到A机器上,比如放在C:\SeleniumPlugins目录下。在环境变量的Path中,添加该目录地址:C:\SeleniumPlugins。

    在B机器上,执行同样的操作。

    

3. C#代码:

  1. 创建控制台项目,添加Selenium引用。

  

  2. 代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenQA.Selenium;
using OpenQA.Selenium.Remote;
using OpenQA.Selenium.Chrome; namespace RunTestOnRemoteGrid
{
class Program
{
static void Main(string[] args)
{ IWebDriver driver=new ChromeDriver();
try
{
driver = new RemoteWebDriver(new Uri("http://10.189.1.206:4444/wd/hub"), new ChromeOptions());
driver.Navigate().GoToUrl("http://www.baidu.com");
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
finally
{
driver.Quit();
}
}
}
}

  3. 运行:就可以看到Client端在执行,没啥动作,而B机器上,打开了Chrome浏览器,访问Baidu

.NET自动化测试工具:Selenium Grid的更多相关文章

  1. 开源Web自动化测试工具Selenium IDE

    Selenium IDE(也有简写SIDE的)是一款开源的Web自动化测试工具,它实现了测试用例的录制与回放. Selenium IDE目前版本为 3.6 系列,支持跨浏览器运行,所以IDE的UI从原 ...

  2. 【tips】自动化测试工具 - selenium和phantomJS

    ### 目录清单 selenium和phantomjs概述 selenium常用API 案例操作:模拟登陆csdn 1. selenium和phantomJS是什么东西 selenium是一套web网 ...

  3. python网络爬虫之自动化测试工具selenium[二]

    目录 前言 一.获取今日头条的评论信息(request请求获取json) 1.分析数据 2.获取数据 二.获取今日头条的评论信息(selenium请求获取) 1.分析数据 2.获取数据 房源案例(仅供 ...

  4. Web应用程序自动化测试工具Selenium的主要功能有哪些?

    Selenium是一个用于Web应用程序测试的工具.是一个开源的Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动操作,不同是Selenium可 ...

  5. python自动化测试工具selenium使用指南

    概述 selenium是网页应用中最流行的自动化测试工具,可以用来做自动化测试或者浏览器爬虫等.官网地址为:https://www.selenium.dev/.相对于另外一款web自动化测试工具QTP ...

  6. 自动化测试工具selenium webdirver

    看视频学到的,自动化测试工具,可以模拟用户操作,包括输入,点击等操作 新建新文件夹 在命令行执行npm init  ,一路回车,把项目先初始化 安装  npm install selenium-web ...

  7. 自动化测试工具Selenium和QTP的比较

    一.用户仿真:Selenium在浏览器后台执行,它通过修改HTML的DOM(文档对象模型)来执行操作,实际上是通过javascript来控制的.执行时窗口可以最小化,可以在同一机器执行多个测试.QTP ...

  8. firefox插件-自动化测试工具-selenium IDE

    教程:http://www.yiibai.com/selenium/selenium_download_ide.html 下载地址:https://addons.mozilla.org/en-US/f ...

  9. 自动化测试工具-Selenium IDE 教程一

    引言:这里介绍的是谷歌浏览种的插件,安装教程这里不再描述,网上有很多, 使用教程不是特别多,所以特地花时间整理此篇内容: 一:打开插件,欢迎界面 启动IDE后,将显示一个欢迎对话框. 如果这是您第一次 ...

  10. 自动化测试工具selenium的使用

    1.自动化测试的前提

随机推荐

  1. VMware 虚拟机centos下链接网络配置

    1.点击Network Adapter 设置如下图所示,首先我们在虚拟机中将网络配置设置成NAT, 2.计算机右键->管理->服务和应用程序->服务,启动如下两个服务 3.在etc/ ...

  2. Vue(二) 计算属性

    模板内的表达式常用于简单的运算,当过长或逻辑复杂时,难以维护,计算属性就是解决该问题的 什么是计算属性 表达式如果过长,或逻辑更为复杂,就会变得臃肿甚至难以维护,比如: <div> {{ ...

  3. vue组件局部与全局注册的区别

    //局部注册 var mycomponent = new extend({        <!--Vue.extend()是Vue构造器的扩展,调用Vue.extend()我们将创建一个组件构造 ...

  4. scp ssh-key连接原理

    scp ssh-key连接原理   如何关闭位置解析 vim手动打开ssh的配置文件修改81行和122行,位置解析需要双方都关闭      注意重点部分   ssh特别提醒   22端口信息   连接 ...

  5. spoj Minimax Triangulation

    题解: dp+计算几何 F[i][j]表示第i-j条边的答案 然后转移一下 代码: #include<bits/stdc++.h> using namespace std; ]; ][]; ...

  6. python魔术方法(__init__,__call__,被双下划线包围的方法)

    转载link:http://pycoders-weekly-chinese.readthedocs.io/en/latest/issue6/a-guide-to-pythons-magic-metho ...

  7. 第一章01:熟悉java,发展历史

    1. java由来: 原公司,sun,后来被oracle\甲骨文公司收购 java,主要用于开发互联网软件,例如:QQ.迅雷.淘宝.京东

  8. CentOS7 linux下yum安装mysql5.7

    文章参考(https://www.cnblogs.com/jorzy/p/8455519.html) 1.创建存放安装包的位置,并且进入该目录 命令mkdir /share 命令cd /share 2 ...

  9. kafka 分区和副本以及kafaka 执行流程,以及消息的高可用

    1.Kafka概览 Apache下的项目Kafka(卡夫卡)是一个分布式流处理平台,它的流行是因为卡夫卡系统的设计和操作简单,能充分利用磁盘的顺序读写特性.kafka每秒钟能有百万条消息的吞吐量,因此 ...

  10. Javascript获取图片原始宽度和高度的方法详解

    前言 网上关于利用Javascript获取图片原始宽度和高度的方法有很多,本文将再次给大家谈谈这个问题,或许会对一些人能有所帮助. 方法详解 页面中的img元素,想要获取它的原始尺寸,以宽度为例,可能 ...