Selenium Grid Parallel Test(C#)

Author: Mars (hnynes)
Email:  hnynes@gmail.com
MSN:    hnynes@gmail.com

前段时间由于项目中用到了Selenium Grid Test,只是(parallel)并行测试却一直没有做成功.
昨天查了一个参数,感觉好像是并行了,但是testcase并未全部通过,感觉可能
还是不太对,今天又查了些资料,自己手写了一个,终于成功.

关键词: Selenium,Selenium Grid,Gallio,Parallel

参考链接: 
http://seleniumhq.org/docs/05_selenium_rc.html#c
http://code.google.com/p/design-of-selenium-tests-for-asp-net/
http://blog.csdn.net/Evelyn_Guan/article/details/6338293
http://www.seleniumwiki.com/software-testing/selenium-grid/installing-selenium-grid-with-mbunit-and-gallio/

上面给出了主要参考链接,当然还有很多其它的参考资料,这几个是对最后成功测试有直接指导作用的文章,列于此,仅供参考了.

环境搭建
    本人使用的机器系统环境
    Windows XP Professional SP3

环境工具软件
    1. IE6
    2. Java SDK  (官网可能会有Oracle的协议需要同意)
       http://download.oracle.com/otn-pub/java/jdk/6u30-b12/jdk-6u30-windows-i586.exe
    3. Apache Ant
       http://apache.mirrors.hoobly.com//ant/binaries/apache-ant-1.8.2-bin.zip
    3. Selenium Grid
       http://release.seleniumhq.org/selenium-grid/selenium-grid-1.0.8-bin.zip
    4. Gallio
       http://mb-unit.googlecode.com/files/GallioBundle-3.3.458.0.zip
    由于有些地址可能会无法访问,我给出我的华为网盘的外链,不需要注册即可直接下载.
    http://dl.dbank.com/c0o3fmsxft
      apache-ant-1.8.2-bin.zip
      selenium-grid-1.0.8-bin.zip
      jdk-6u30-windows-i586.exe
      GallioBundle-3.3.458.0-Setup-x86.msi

Java环境
    jdk-6u30-windows-i586.exe
    安装的时候需要记住你安装的路径,因为还需要配置环境变量的
    比较旧的版本,还要求安装的路径不能含有空格
    配置java环境变量
    JAVA_HOME = D:\Program Files\Java\jdk1.6.0_30
    CLASSPATH = ;%JAVA_HOME%/lib;%JAVA_HOME%/lib/tools.jar
    在环境变量PATH的值的最后加上 ;%JAVA_HOME%/bin;%JAVA_HOME%/jre/bin

Apache Ant
    解压Apache Ant到本地的任意路径,配置环境变量
    在环境变量PATH最后加上 ;D:\Program Files\selenium\apache-ant-1.8.2\bin

然后重启计算机
    登录后,验证java与ant环境变量是否生效
    打开系统命令行cmd 输入 java -version 
    回车后,系统会显示机器上安装的java的版本相关的信息,若没有,则可能是配置的路径不正确,
    请核对后,重新配置,并重启机器
    在cmd下输入 ant -version
    回车后会显示ant的版本相关信息.

解压Selenium Grid到任意路径 如: D:\Program Files\selenium\selenium-grid-1.0.8
    编译Selenium
    在cmd下输入 cd D:\Program Files\selenium\selenium-grid-1.0.8
    在cmd下输入 ant sanity-check
    回车,最后若显示BUILD SUCCESSFUL,则Selenium Grid则配置成功

启动selenium grid hub
    在cmd下输入 cd D:\Program Files\selenium\selenium-grid-1.0.8
    在cmd下输入 ant launch-hub
    这里会默认使用4444作为hub的端口,因此若要使用其它端口,需要带其它参数,可自已找些资料解决这个问题
    
    启动selenium remote control
    在cmd下输入 cd D:\Program Files\selenium\selenium-grid-1.0.8
    在cmd下输入 ant launch-remote-control -Dhost=localhost -Dport=5555 -DhubURL="http://localhost:4444" -Denvironment="*iexplore" 
    
    打开IE,然后在地址栏输入http://localhost:4444/console
    若能看到已经打开的5555端口,至此,自动化测试环境的搭建就完成了.
    当testcase连接上selenium grid hub,发送请求时,hub会将请求分配给对应浏览器的remote control处理.
    
代码实例 C#
    在这个单元,提几个注意点,其它的看代码吧,我有给出我的代码工程链接,自己下载研究吧.
    引用Gallio,MbUnit
    代码中需要加using MbUnit.Framework;
    在AssemblyInfo.cs加上如下代码
    [assembly: DegreeOfParallelism(2)]
    [assembly: Parallelizable(TestScope.All)] 
    若要单实例测试,则将上面的[assembly: DegreeOfParallelism(2)]改为[assembly: DegreeOfParallelism(1)]即可
    
    若要并行则[assembly: DegreeOfParallelism(2)] 括号中的数值表示用多少线程来执行请求,也就是我们的并行度
    只要数字大于1即可
    另外还需要在每个测试类的[TestFixture] 下面加上[Parallelizable]

给出代码链接: http://dl.dbank.com/c0awfvxwlv
    由于本人不是做C#开发的,写得有些粗浅了,关键是要能用,能达到我们测试的目的.

Gallio驱动脚本
  在cmd下输入d:
    在cmd下输入cd D:\Program Files\Gallio\bin      (Gallio安装路径)
    在cmd下输入Gallio.Echo.exe /r:IsolatedProcess /rd:E:\wswork\code\vs2008\MyTest1\bin\Debug\reports E:\wswork\code\vs2008\MyTest1\bin\Debug\MyTest1.dll /rt:Html /rnf:FareRule-{0}-{1}
    
    现在还有一个遗留的问题:
    对于奇数个线程的情况,会出现有时使用偶数个,有时使用奇数个的现象
    
    另外若运行后有错误,当再次运行时,建议重启hub与remote control,防止出现其它不可预知的现象.

selenium并行的使用的更多相关文章

  1. 转:selenium 并行启动多个浏览器

    https://github.com/fool2fish/selenium-doc/blob/master/official-site/selenium-grid.md Selenium Grid 快 ...

  2. Selenium并行启动多个浏览器

    如果你对 Selenium 自动化测试已经非常熟悉,你仅仅需要一个快速上手来使程序运行起来.本章节的内容能满足不同的技术层次,但是如果你仅仅需要一个可以快速上手的指引,那么就显得有点多.如果是这样,你 ...

  3. python入门16 递归函数 高阶函数

    递归函数:函数内部调用自身.(要注意跳出条件,否则会死循环) 高阶函数:函数的参数包含函数 递归函数 #coding:utf-8 #/usr/bin/python """ ...

  4. Selenium多浏览器并行测试

    如果需要同时在IE.firefox.chrome进行测试,可以使用grid. Selenium Grid是一个智能代理服务器,允许Selenium测试将命令路由到远程Web浏览器实例.其目的是提供一种 ...

  5. selenium使用笔记(一)

    有时候在交流群里经常会看到这样的问题,selenium能进行性能测试吗?selenium1和selenium2有什么区别等等问题,在这里谈一下自己学习和工作以后对selenium的认识.我所记录的东西 ...

  6. selenium webdriver自动化测试

    selenium家族介绍           Selenium IDE:Selenium IDE是嵌入到Firefox浏览器中的一个插件,实现简单的浏览器操作的录制与回放功能.   Selenium ...

  7. java selenium (一) selenium 介绍

    Selenium 是目前用的最广泛的Web UI 自动化测试框架. 本系列文章,将深入简出来讲解selenium 的用法 文章的末尾处, 有整个系列的链接 阅读目录 selenium 的命名 sele ...

  8. 也谈自动化平台的搭建,另附高大上的名字---无人值守定时巡检系统(selenium+testng+ant+jenkins)

    最近公司新项目改版,由于没有运维,开发则负责上线任务,并且都是手动上线,并行的项目多了,分支混乱,经常导致B项目上线覆盖A项目,导致系统不定时出现异常,老板知道了便扣了大家的绩效,作为测试这边必须想个 ...

  9. Selenium 2 入门

    在多个浏览器中进行 Web 应用程序的端到端功能测试 Selenium 是一款有名的 Web 应用程序测试框架,用于进行功能测试.新版本 Selenium 2 结合了 Selenium 1 和 Web ...

随机推荐

  1. Forward链、Input链和Output链的区别

    转载自:http://blog.chinaunix.net/uid-27863080-id-3442374.html 1. 如果数据包的目的地址是本机,则系统将数据包送往Input链.如果通过规则检查 ...

  2. poj3020 建信号塔(匈牙利算法 最小覆盖边集)

    Antenna Placement Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10518   Accepted: 518 ...

  3. hive on hbase

    },{NAME },{NAME } put 'ccc20180710','ooccpp.com','f1:c1','name1' put 'ccc20180710','ooccpp.com','f1: ...

  4. c# yield关键字原理

    https://www.cnblogs.com/blueberryzzz/p/8678700.html c# yield关键字原理详解 1.yield实现的功能yield return:先看下面的代码 ...

  5. vuex 浅认知

    什么是Vuex? Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式. 采用了集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 什么情况下我应该使用 ...

  6. Git钩子设置自动构建Jenkins

    打开Git仓库,找到对应的项目,点击“仓库设置”,左侧点击“管理Git钩子”,如下图所示: 因为是push之后触发自动构建的,选择“post-receive”进行编辑 #!/bin/bash #提取分 ...

  7. @RequestParam详解以及加与不加的区别

    以前写controller层的时候都是默认带上 @RequestParam 的, 今天发现不加@RequestParam 也能接收到参数 下面我们来区分一下加与不加的区别 这里有两种写法 @Reque ...

  8. vue proxyTable 接口跨域请求调试(五)

    在不同域之间访问是比较常见,在本地调试访问远程服务器....这就是有域问题. VUE解决通过proxyTable: 在 config/index.js 配置文件中 dev: { env: requir ...

  9. 贪心:钱币找零问题(C++)

    贪心是一种算法范例,它一点一点地构建解决方案,总是选择下一个提供最明显和最直接好处的部分.因此,选择局部最优也会导致全局解的问题最适合贪心问题. 例如,考虑分数背包问题.局部最优策略是选择权重比最大的 ...

  10. 获得数据库image图片二进制

    /// <summary>        /// 获得图片二进制        /// </summary>        /// <param name="u ...