您的位置:软件测试 > 开源软件测试 > 开源功能测试工具 > Selenium
使用分层的Selenium框架进行复杂 Web 应用的自动测试
作者:网络转载 发布时间:[ 2014/12/8 16:34:22 ] 推荐标签:Selenium 开源测试工具

  Selenium概述
  Selenium是一种Web应用的自动测试工具,通过模拟用户对Web页面的各种操作,可以精确重现软件测试人员编写的Test Cases步骤。Selenium包含三个工具:Selenium-IDE,Selenium-RC以及Selenium-Core。其中,Selenium-Core是驱动Selenium工作的核心部分,作为一个用JavaScript编写的测试引擎,它可以操作Web页面上的各种元素,诸如:点击按钮、输入文本框,以及断言Web页面上存在某些文本与Web元素等。
  Selenium-IDE是一个Firefox插件,能够录制回放用户在Firefox中的行为,并把所记录的Selenese(Selenium Commands)转化为Java/C#/Python/Ruby等语言,在Selenium-RC中修改复用。对于较为复杂的Test Cases,Selenium-IDE的功能有限,往往用它录制大致的步骤,再转化为测试人员熟悉的编程语言,在此基础上完善,形成更为强大且灵活的Selenium-RC Test Cases。
  Selenium-RC(Selenium Remote Control)在Web浏览器与需要测试的Web应用间架设代理服务器(Selenium Server),使得JavaScript引擎与被测Web应用同源,绕开同源策略的限制(Same Origin Policy),进而取得对Web页面进行各种操作的权限。
  开发环境配置
  以Java作为测试用语言为例,在Eclipse中新建一个Java项目Test Search Engine,下载Selenium-RC软件包,把selenium server/selenium java client driver的Jar以及JUnit库加入到该项目的Java Build Path。

  图1.Build Path配置

  启动Selenium-Server,可以在命令行中使用java-jar命令直接运行可执行Jar包(对于中文Windows操作系统且使用IBM JDK,还需要加参数-Dibm.stream.nio=true)。如果想在Java程序中启动/停止Selenium-Server,首先,新建一个RemoteControlConfiguration对象rcc,并指定远程控制参数(包括配置Selenium Server的监听端口,Firefox浏览器的Profile等),然后新建一个SeleniumServer对象,把rcc传入SeleniumServer的构造函数(对于中文Windows操作系统且使用IBM JDK,在Eclipse的Run Configurations的VM arguments中加入-Dibm.stream.nio=true)。
  清单1.使用Java启动/停止Selenium Server
  RemoteControlConfiguration rcc=new RemoteControlConfiguration();
  rcc.setPort(4444);//指定Selenium Server开放端口
  SeleniumServer SELENIUM_SERVER;
  SELENIUM_SERVER=new SeleniumServer(rcc);
  SELENIUM_SERVER.start();//启动server
  //测试代码
  SELENIUM_SERVER.stop();//停止server
  此外,Selenium Server还可以通过Ant脚本来控制启动/停止,这提供了另一种灵活而强大的项目控制方式。
  清单2.使用Ant脚本启动/停止Selenium Server
  在Selenium-Server启动后,建立一个Selenium类的实例selenium,并通过这个实例与Selenium-Server进行交互,方法如下。
  清单3.Selenium实例的启动/停止
  Selenium selenium=new DefaultSelenium(java.lang.String serverHost,
  int serverPort,
  java.lang.String browserStartCommand,
  java.lang.String browserURL);
  selenium.start();
  //经由selenium控制浏览器模拟各种用户操作
  selenium.stop();
  Selenium实例包含丰富接口,可以对各种Web元素进行各种操作。例如,在谷歌页面中输入“developerWorks”,点击搜索按钮,在结果页面中验证是否包含“developerWorks中国”字样等。
  清单4.Selenium测试的简单示例
  Selenium selenium=new DefaultSelenium("localhost",4444,"*firefox",
  "http://www.google.cn");
  selenium.start();//启动浏览器
  selenium.open("/");//打开www.google
  selenium.type("q","developerworks");//输入文本框
  selenium.click("btnG");//点击搜索按钮
  selenium.waitForPageToLoad("30000");//等待加载结果页面
  verifyTrue(selenium.isTextPresent("developerWorks中国"));//验证是否存在指定字符
  selenium.stop();//关闭浏览器
  当Selenim遇到TestNG
  用Selenium测试Web页面时,所重现的各种行为依赖于测试人员的输入参数,例如:选择下拉餐单的项目,在文本框中输入字符等。不同的测试用例对应不同的输入,若有方法能够简单有效的传入测试用参数,会大大提高测试用例的复用性和可维护性。当Selenium遇到TestNG,这些可以实现。TestNG中的NG,意为Next Generation,事实上,该测试框架引入了不少新特性:灵活的测试配置,支持JDK 5注释,支持数据驱动的测试,强大的执行模型等。

上一页1234下一页
软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd