估计现在用selenium 的人也越来越多了。selenium rc用起来了之后。肯定会有一些想法。

第一,怎么能同时跑多个测试,就是所谓的并发。否则来100个case,一个一个的跑,几个小时才能跑完。那也太慢了吧。
第二,我需要在不同的环境/浏览器下运行同样的测试。看看我的程序会不会由于浏览器不同而有问题,最常见的就是需要同时在IE和Firefox下面都测试。
研 究selenium的时候,肯定也看到过听说过selenium grid 这个东西,肯定也看过介绍。从他的介绍上来看。刚好满足上面的两个问题。然后很多人以为这下发了。只要把selnium grid 应用进来,那就好了。然后就开始去研究怎么能够把grid配置起来,从而来满足上面两个需求。
然后我经常碰到别人问我两个问题。怎么配置grid,让grid来调用我的脚本,然后实现多环境下面的测试。。另外一个是怎么配置grid,让grid来调用我一些脚本,让他们并行运行来加快速度。
这里要说一下。这两个都是误区。。因为无论grid怎么配置,都不会自动来调用你的脚本,完成所谓的并行或者多环境测试。
下面一点很重要:Grid只是提供运行脚本的环境,无法决定脚本以什么样的形式去跑(并行的方式,或者多环境的方式)。脚本以什么样的形式跑,由脚本本身和脚本的runner(一般用junit或者TestNG)的配置所决定.
然后我们分别来说说并行和多环境的是怎么实现的。
第一,并行。并行很简单。。脚本就是普通的脚本。然后如果你的runner支持并行运行的话。你就配置成并行。那运行起来就是并行的。。目前junit本身不支持并行,一般都是用TestNG. 只要让TestNG 并行的运行测试,无论你的测试环境是由一个grid拖几个rc组成,还是单一一个rc组成。。实际上 运行起来测试就是并行的,唯一的区别是。如果用了grid的话,grid会把并发数量平均分配到不同的rc上去,然后每个rc会启动一个浏览器运行测试。而没有用grid情况就是同一个rc直接跑多个,就是一个rc直接打开多个浏览器窗口运行多个测试。
第二, 多环境。 说多环境,这里也要澄清一下。不是说给一个普通的测试脚本,丢给grid就可以自动实现多环境同时测试了。那是完全错误的。。这里需要几点。1.一个普通脚本能测试一个某一种环境。所以如果你要测试多个环境就需要多个脚本。而这些脚本的区别仅在于setup的时候定义DefaultSelenium("localhost",4444,"*firefox",Url); 这里。因此两个测试方法也可以到同一个文件里面。写两个不同的方法,不同的定义DefaultSelenium部分,但调用同样的测试步骤。(就是selenium.open...开始到selenium.stop...).这样一个文件下就算包含测试两个不同环境的测试方法了。
2.让这两个测试方法,并行运行。。那又是testng的事情了。配置testng的suite。不细说。可以查看testng的文档。
3.grid配置的测试的rc环境,里面需要有刚才两个测试方法所需要的环境。
好了,这样,就实现了多环境,同时测试。。
另外前面提到的一个普通测试脚本就是一个文件里面包含一个setup(),一个testXXX(),一个tearDown()...

这里给个我所谓普通junit测试脚本的例子:
package test;
import org.testng.annotations.Test;
import org.testng.AssertJUnit;
import com.thoughtworks.selenium.*;
import java.util.regex.Pattern;
import junit.framework.TestCase;
public class NewTest extends TestCase{
public void setup()throws Exception{
Selenium selenium = newDefaultSelenium("localhost",4444,"*chrome","http://www.google.cn");
selenium.start();
}
public void testScript(Selenium selenium)throws Exception{
selenium.start();
selenium.open("http://www.google.cn/");
selenium.type("q", "selenium");
selenium.click("btnG");
selenium.waitForPageToLoad("30000");
assertEquals("selenium - Google 搜索",selenium.getTitle());
}
public void tearDown()throws Exception{
selenium.stop();
}
}
然后如果要跑多环境并行,就需要修改这个脚本。
一个例子,最少更改junit testcase的方式,用testng来跑。
跑多个环境。。
package test;
import org.testng.annotations.Test;
import org.testng.AssertJUnit;
import com.thoughtworks.selenium.*;
import java.util.regex.Pattern;
import junit.framework.TestCase;
import org.testng.annotations.*;
public class NewTest extends TestCase{
@Test()
public void testNew() throws Exception {
Selenium selenium = newDefaultSelenium("localhost",4444,"*chrome","http://www.google.cn");
script(selenium);
}
@Test()
public void testNew2() throws Exception {
Selenium selenium = newDefaultSelenium("localhost",4444,"*iehta","http://www.google.cn");
script(selenium);
}
private void script(Selenium selenium)throws Exception{
try{
selenium.start();
selenium.open("http://www.google.cn/");
selenium.type("q", "selenium");
selenium.click("btnG");
selenium.waitForPageToLoad("30000");
assertEquals("selenium - Google 搜索",selenium.getTitle());
}catch(Exception e){
throw e;
}finally{
selenium.stop();
}
}
}

脚本修改好之后,就需要定义个testng下面并行跑的test suite file.
一个test suite.xml文件,用testng 执行这个文件,就可以对 昨天写的那个case进行并行运行了。

<!DOCTYPE suite SYSTEM"http://testng.org/testng-1.0.dtd">
<suite name="TestNG by tests"parallel="methods" thread-count="2">
  <test name="p1" annotations="JDK">
   <classes>
     <classname="test.NewTest"/>     
   </classes>
  </test> 
</suite>
新建一个.xml 文件,然后在eclipse , open run dialog 选择project 选择 suite文件. "Browse F5"指定这个文件。

【转】Selenium Grid 个人理解相关推荐

  1. selenium简介-----如何理解selenium-WebDriver

    最近经常有人提问,你如何理解和看待这个selenium? 针对这一问题,官网上已经给了很明确的答复:"浏览器的自动化操作,你想干嘛就干嘛.....就这么简单!" Selenium ...

  2. Selenium Grid的使用(分布式测试)

    1.Selenium Grid简介 Selenium Grid组件专门用于远程分布式测试或并发测试.使用此组件可以在一台计算机上给多台计算机(不同操作系统和不同版本浏览器环境)分发多个测试用例从而并发 ...

  3. Robot Framework + Selenium2Library环境下,结合Selenium Grid实施分布式自动化测试

    最近一段时间,公司在推行自动化测试流程,本人有幸参与了自定义通用控件的关键字封装和脚本辅助编写.数据驱动管理.测试用例执行管理等一系列工具软件的研发工作,积累了一些经验,在此与大家做一下分享,也算是做 ...

  4. Selenium Grid的搭建方法

    一.什么是Selenium Grid Selenium Grid 是一种可以并发执行 GUI 测试用例的测试执行机的集群环境,分为 HUB 和 Node 模式.Selenium Hub 用来管理各个 ...

  5. 03-19 分布式测试-Selenium Grid

    简介 Selenium Grid 远程运行 Selenium test,主旨是在多个机器上并行运行 selenium 优点 它是所有测试的中心入口点 可以管理和控制浏览器运行的 Nodes/环境 扩展 ...

  6. Selenium Grid跨浏览器-兼容性测试

    Selenium Grid跨浏览器-兼容性测试 这里有两台机子,打算这样演示: 一台机子启动一个作为主点节的hub 和 一个作为次节点的hub(系统windows 浏览器为ie) ip为:192.16 ...

  7. Selenium大家族介绍(selenium RC,selenium IDE, selenium Grid, selenium Webdriver)

    Selenium selenium 是当下非常流行的自动化测试框架,selenium是开源项目. selenium是一个大家族,这个家族中的主要成员有如下所示: selenium RC: seleni ...

  8. 【Selenium Grid 分布式测试】Selenium Grid-简介

    前言 一直想学习自动化测试,但是都没行动,业余时间学习零零碎碎并记录20210423. 9.Selenium Grid 分布式测试 Selenium Grid 分布式测试-Selenium Grid简 ...

  9. Selenium Grid 分享

    Selenium 家族简单介绍: Selenium 1.0 Selenium 1.0 包括了 Selenium IDE, Selenium Grid和Selenium RC(Selenium Remo ...

最新文章

  1. 简单的无监督词统计nlp预测模型
  2. python学习笔记之函数(方法)
  3. Selenium+phanmJs 操作浏览器 爬取数据
  4. springmvc整合redis架构搭建实例
  5. QT的QItemModelBarDataProxy类的使用
  6. react手机机端css_react工程搭建系列之---移动端适配与antd-mobile高清适配方案
  7. 常见面试算法:Logistic回归、树回归
  8. Mac下docker安装kali/ubuntu14.04
  9. 前后端分离后的权限控制设计​方案
  10. mysql必知必会的数据_MySQL必知必会---数据过滤
  11. Mybatis--关于插入数据后返回id的操作
  12. 流氓软件的完全卸载的一些方法
  13. 使用HDTunePro检测硬盘快速上手教程
  14. Linux 自带神器 logrotate 详解
  15. 第十一届蓝桥杯大赛软件类B组省赛题目(2020蓝桥杯)
  16. 5G未能拯救国内手机市场,手机出货量持续下滑
  17. 正面管教php_正面管教php_我校开展正面管教家长工作坊分享会
  18. 激光测距仪传感器,基于EFM32控制器开发设计_方案
  19. 浙江财经大学python_朱宗元-浙江财经大学 数据科学学院
  20. vue 祖孙组件通信, 祖组件获取孙组件数据

热门文章

  1. 哈工大计算机系统大作业 程序人生-Hello’s P2P 2022
  2. 量子计算(八):观测量和计算基下的测量
  3. 一、STM32用HAL库实现uS级延时
  4. kettle9.2报 Connection failed. Verify all connection parameters and confirm that the appropriate driv
  5. 中基鸿业个人理财的基本原则
  6. 什么是Java虚拟机
  7. 江苏专转本考前焦虑自救指南
  8. Adobe Firefly萤火虫试用版功能介绍
  9. Opencv --- 背景消除建模(BSM)
  10. 闪蚁市场:全球首个把时间交易与区块链结合的Dapp