本帖最后由 sunshinelius 于 2010-11-29 09:55 编辑
1. 开发selenium Case
1. 基于录制回放的selenium case
录制一个简单的web计算器功能,export到junit模式,保存为selJava.java文件,如下:
- package com.example.tests;import com.thoughtworks.selenium.*;import java.util.regex.Pattern;public class selJava extends SeleneseTestCase { public void setUp() throws Exception { setUp("http://change-this-to-the-site-you-are-testing/", "*chrome"); } public void testSelJava() throws Exception { selenium.open("/calc.htm"); selenium.click("//input[@name='alex' and @value='1']"); selenium.click("//input[@name='alex' and @value='+']"); selenium.click("//input[@name='alex' and @value='2']"); selenium.click("//input[@name='alex' and @value='=']"); verifyEquals("3", selenium.getValue("display")); }}
复制代码
以上Selenium case继承SeleneseTestCase,SeleneseTestCase的父类是Junit TestCase,因此,在默认模式下,Selenium Case实际上是以Junit Runner方式运行的。 Junit本身是java单元测试框架,并不完全满足我们selenium的测试需求,比如对case之间的依赖关系及数据交互,web测试抓图等等,junit并不能胜任。
2. Selenium 代码从Junit模式转化到AC模式可遵循以下步骤,将junit模式的selenium 代码转化成在AC模式: 1.在java环境中的classPath添加ac_framework.jar 2.在case文件头添加 import framework.JobDOM.ACSeleniumJob; 将selJava 的父类改为ACSeleniumJob, public class selJava extends ACSelniumJob
Ok,到这里,新的selenium case已经完成了(红色为修改处),如下:
- package com.example.tests;import com.thoughtworks.selenium.*;import java.util.regex.Pattern;import framework.JobDOM.ACSeleniumJob;public class selJava extends ACSeleniumJob { public void setUp() throws Exception { setup("http://change-this-to-the-site-you-are-testing/", "*firefox"); } public void testSelJava() throws Exception { selenium.open("/calc.htm"); selenium.click("//input[@name='alex' and @value='1']"); selenium.click("//input[@name='alex' and @value='+']"); selenium.click("//input[@name='alex' and @value='2']"); selenium.click("//input[@name='alex' and @value='=']"); verifyEquals("3", selenium.getValue("display")); }}
复制代码
3. 在测试任务定义文件中添加Selenium case,运行AC,获得测试结果
TestJobFile中添加Selenium Job,按如下格式定义
- <Selenium name="selenium_demo" description="Test calc" depends="" > <TestData type="xml" location="selenium\config.xml"/> <JobInput name="$MAIL_SUBJECT"/> <ClassPath location="selenium\selenium-java-client-driver_self_extended_oracle.jar"/> <ClassPath location="selenium\orajtst.jar"/> <ClassPath location=" selenium\qa.jar"/><ClassPath location=" selenium\selJava.class"/> <SelTestCase path="selJava"> <SelTest name=" testSelJava "/> </SelTestCase></Selenium>
复制代码
运行AC framework,即可执行selenium Job,并获得测试报告 4. 使用AC的Ant Engine实现启动selenium serve自动化我们最常用的是Selenium RC模式,即先启动一个selenium server,然后才能运行selenium脚本。 java启动selenium server的命令行语句如下: - java –jar selenium-server.jar –port 4444 – proxyInjectionMode –log selServer.txt
复制代码如何把启动 selenium server的java命令行也集成到AC中来呢? 这里要用到AC的Ant Engine。 创建基于Ant Engine的TestJob,TestJob内容遵循Ant语法,如下: - <Ant name="Ant_StartSelenium" description="selenium initialization" depends="" daemon="true"> <java fork="true" spawn="true" jar="D:\selenium-server.jar"> <arg line="-port 4444 "/> <arg line="-proxyInjectionMode"/> <arg line="-log sel.txt"/> </Java> </Ant>
复制代码
启动Selenium server的TestJob可与Selenium Test Job做一个dependence的定义,保证每次运行selenium测试的时候,selenium server是处于启动状态的
- <Ant name="Ant_StartSelenium" description="selenium initialization" depends="" driver_type="ANT" daemon="true">………………………</Ant><Selenium name="selenium_demo" description="Test calc" depends=" Ant_StartSelenium " >…………………….</Selenium>
复制代码
5 框架提供的selenium APIpass(String msg): 向AC汇报当前运行状态,为成功 fail(String msg):向AC汇报当前运行状态,为失败 reportWarning(String msg):向AC汇报当前运行状态,为警告 getDataProperty(String key):获得测试数据 getEnvProperty(String key):获得环境变量及输入数据 getConfProperty(String key):获得配置数据 setOutputValue(String key,String value): 向全局数据通道输出数据
6 Automation 报告运行TestJob,产生基于html页面的测试报告 总览报告 细分诊断报告
|