.NET自动化测试工具:Selenium Grid
在生产环境,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的更多相关文章
- 开源Web自动化测试工具Selenium IDE
Selenium IDE(也有简写SIDE的)是一款开源的Web自动化测试工具,它实现了测试用例的录制与回放. Selenium IDE目前版本为 3.6 系列,支持跨浏览器运行,所以IDE的UI从原 ...
- 【tips】自动化测试工具 - selenium和phantomJS
### 目录清单 selenium和phantomjs概述 selenium常用API 案例操作:模拟登陆csdn 1. selenium和phantomJS是什么东西 selenium是一套web网 ...
- python网络爬虫之自动化测试工具selenium[二]
目录 前言 一.获取今日头条的评论信息(request请求获取json) 1.分析数据 2.获取数据 二.获取今日头条的评论信息(selenium请求获取) 1.分析数据 2.获取数据 房源案例(仅供 ...
- Web应用程序自动化测试工具Selenium的主要功能有哪些?
Selenium是一个用于Web应用程序测试的工具.是一个开源的Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动操作,不同是Selenium可 ...
- python自动化测试工具selenium使用指南
概述 selenium是网页应用中最流行的自动化测试工具,可以用来做自动化测试或者浏览器爬虫等.官网地址为:https://www.selenium.dev/.相对于另外一款web自动化测试工具QTP ...
- 自动化测试工具selenium webdirver
看视频学到的,自动化测试工具,可以模拟用户操作,包括输入,点击等操作 新建新文件夹 在命令行执行npm init ,一路回车,把项目先初始化 安装 npm install selenium-web ...
- 自动化测试工具Selenium和QTP的比较
一.用户仿真:Selenium在浏览器后台执行,它通过修改HTML的DOM(文档对象模型)来执行操作,实际上是通过javascript来控制的.执行时窗口可以最小化,可以在同一机器执行多个测试.QTP ...
- firefox插件-自动化测试工具-selenium IDE
教程:http://www.yiibai.com/selenium/selenium_download_ide.html 下载地址:https://addons.mozilla.org/en-US/f ...
- 自动化测试工具-Selenium IDE 教程一
引言:这里介绍的是谷歌浏览种的插件,安装教程这里不再描述,网上有很多, 使用教程不是特别多,所以特地花时间整理此篇内容: 一:打开插件,欢迎界面 启动IDE后,将显示一个欢迎对话框. 如果这是您第一次 ...
- 自动化测试工具selenium的使用
1.自动化测试的前提
随机推荐
- day71 菜单的排序 点击被选中
菜单的排序:(给菜单设置权重,权重高的让他显示在上面) from django import template from django.conf import settings from collec ...
- python读取与写入csv,txt格式文件
python读取与写入csv,txt格式文件 在数据分析中经常需要从csv格式的文件中存取数据以及将数据写书到csv文件中.将csv文件中的数据直接读取为dict类型和DataFrame是非常方便也很 ...
- Vuejs的$nextTick原理
本质: nextTick,本质上是一个异步API,表示当前同步流程执行完成后再调用传入的函数. 根据环境不同,异步API的实现可以分别通过: setTimeout(0), new Promise(), ...
- Linux应用调试 :使用gdb和gdbserver进行远程调试
一.引言 在日常程序开发中不免遇到类似空指针操作导致程序崩溃的问题,所以需要一定的手段去定位bug,而断点调试是普遍使用的技巧,比如Windows中用VC++的debug模式进单步运行.断点调试等,而 ...
- 《JavaScript Dom 编程艺术》读书笔记-第8章
充实文档的内容,包括几个方面: 一个为文档创建“缩略图列表”的函数: 一个为文档创建“文献来源链接”的函数: 一个为文档创建“快捷键清单”的函数. <abbr>在HTML5 中以取代< ...
- Layer For Mobile 弹窗 input输入文字后,点击取消确定按钮失效(需点击两次)
webapp中使用Layer For Mobile弹出弹窗,修改昵称输入文字后,ios手机中,如果不先点击收起键盘,两个按钮点击之后无效... 两个按钮的方法是写在这里的——> 最后只能吧点击按 ...
- SAZ文件的打开与保存
保存 在Fiddler上,使用菜单“文件”>“保存” 可以将当前的HTTP请求信息保存成SAZ文件. 读取 在Fiddler上,使用菜单“文件”>“加载档案”可以读取SAZ文件,加载其 ...
- 一轮冲刺(NABCD)和需求分析
N我们的创意是为了解决我们测量人员在测量结束后要计算一些数据的问题,当我们观测角度后,有大量的角度需要计算,有时会用到角度与弧度的转换. A我们测量人员知道计算的公式,了解一些c++和c# B我们这个 ...
- React Native Android打包apk
按照官方的5步曲: 1.在终端里面,cd 到项目的根目录后.执行下面这行命令: keytool -genkey -v -keystore my-release-key.keystore -alias ...
- c程序的期望
对于C语言,我认为是我们计算机专业必须掌握的,如果C语言都不能掌握好,我认为在以后的学习中也不会学的有多好,所以,我们要把C语言尽量掌握好,也是在今后的学习中打好基础,多看书,多写一些程序运行,做一些 ...