Tellurium测试案例 Tellurium设置设置设备摆" /> 
快捷搜索:

自动测试工具Tellurium快速上手指南<BR>Tellurium子项

自动测试对象Tellurium快速上手指南

TelluriumQuickStart

Tellurium快速上手指南.

简介

Tellurium子项目

一点Tellurium观点

Tellurium物件

Locator

UI模块

测试案例">Tellurium测试案例

Tellurium设置设置设备摆设摆设

运行Tellurium的前提

创建自己的Tellurium测试项目

创建自己的UI模块

相关资本

简介

Tellurium是一个开源的网页测试框架,现阶段照样建立在Selenium之上。 但有很多独特的测试理念。 比之Selenium, 掩护性,鲁棒性, 和可复用性都要好。 它支持JUnit和TestNG。Tellurium的测试代码可以用Java, Groovy和纯DSL脚原先写.

Tellurium子项目

Tellurium由以下子项目构成:

Tellurium Core: 处置惩罚DSL, 自动天生Runtime Locator,和测试案例的支持。

Tellurium Engine: 是Tellurium的底层测试驱动模块

Tellurium Widget: 是Tellurium的扩展,可以定义Javascript库, 如Dojo和ExtJS,的Widget,以便重用。

Tellurium UI Module Plugin (TrUMP): 是个Firefox插件,能够让用户在待测网页上选择所需的UI元素,然后自动天生Tellurium UI模块。

Tellurium Reference Project: 是Tellurium的参考项目,测试代码是为Tellurium项目的网页而写的。主要向用户展示若何定义自己的Tellurium物件(Object), 若何写Tellurium测试代码,数据驱动代码,和纯DSL脚本。参考项目有两个,分手为JUnit项目和TestNG项目。

Tellurium Maven Archetypes: 方便用户创建自己的Tellurium测试项目。有两个Archetype,为JUnit项目和TestNG项目而设。

一点Tellurium观点

虽然Tellurium脱胎于Selenium,但两者在观点上有很大年夜的不合。Selenium主如果用记录和重播(Record and Replay)模式,而Tellurium要求你首先定义待测的UI模块。下面列出Tellurium的一些主要观点:

Tellurium物件

Tellurium定义了一些常用的物件,如Button, Table, Form等。

Tellurium物件至少包孕以下属性:

uid: 物件的引用名

namespace: 用于XHTML,对HTML它老是null

locator: 用于定位物件相对应的UI元素在网页DOM中的位置。它会是XPath或由一系列的属性构成,如HTML tag, type, value等等。 下节会更具体先容。

Tellurium物件

Locator缺省属性

额外属性

UI模板

Button

tag: "input"

Container

group

CheckBox

tag: "input", type: "checkbox"

Div

tag: "div"

Form

tag: "form"

group

Image

tag: "img"

InputBox

tag: "input"

RadioButton

tag: "input", type: "radio"

Selector

tag: "select"

Span

tag: "span"

SubmitButton

tag: "input", type: "submit"

UrlLink

tag: "a"

List

separator

可用

Table

tag: "table"

group, header

可用

StandardTable

tag: "table"

group, header, footer

可用

Frame

group, id, name, title

Window

group, id, name, title

值得留意的是Tellurium物件大年夜多为抽象物件,比如Container就可以实用于不合的HTML标签。每个Tellurium物件都有一个uid,即它的又名。

Locator

Locator是用来定位一个元素在网页DOM中的位置,Tellurium支持两种Locator, 一种叫 Base Locator , 用“locator”标识,它是一个相对的XPath. 如:

InputBox(uid: "SearchBox", locator: "//input[@title='Google Search']")

另一个是 Composite Locator , 用“clocator”来标识,它是由一组属性构成,如

InputBox(uid: "SearchBox", clocator: [title: "Google Search"])

Composite Locator 是Tellurium的缺省Locator, 它轻易写,表叙性好,方便动态天生Runtime Locator.

UI模块

UI模块是一个复合的Tellurium物件,它是由一些单个Tellurium物件嵌套构成。一个UI模块每每代表DOM的一个子树。比如Google首页搜索模块就可以表叙为

ui.Container(uid: "GoogleSearchModule", clocator: [tag: "td"], group: "true"){

InputBox(uid: "Input", clocator: [title: "Google Search"],respond: ["focus", "mouseOver"])

SubmitButton(uid: "Search", clocator: [name: "btnG", value: "Google Search"])

SubmitButton(uid: "ImFeelingLucky", clocator: [value: "I'm Feeling Lucky"])

}

UI模块的最外层元素以定要以"ui."开始。这里group为“true”表示Tellurium用使用UI元素之间的关系来帮忙它们在网页DOM中的定位。respond属性定义了InputBox必要触发“focus”和“mouseOver”事故,Tellurium会自动触发这些事故的。

测试案例>Tellurium测试案例

Tellurium测试代码可以用Java, Groovy, 或纯DSL脚原先写。无论哪种措施,Tellurium要求你定义自力的UI模块,使之和测试代码分离,以便于掩护。UI模块必须承袭Tellurium的DslContext class, 一样平常你还需定义对UI模块的操作措施。例如:

class GoogleSearchModule extends DslContext{

public void defineUi() {

ui.Container(uid: "google_start_page", clocator: [tag: "td"], group: "true"){

InputBox(uid: "searchbox", clocator: [title: "Google Search"])

SubmitButton(uid: "googlesearch", clocator: [name: "btnG", value: "Google Search"])

SubmitButton(uid: "Imfeelinglucky", clocator: [value: "I'm Feeling Lucky"])

}

}

def doGoogleSearch(String input){

keyType "searchbox", input

pause 500

click "googlesearch"

waitForPageToLoad 30000

}

def doImFeelingLucky(String input){

type "searchbox", input

pause 500

click "Imfeelinglucky"

waitForPageToLoad 30000

}

}

假如你的测试案例用JUnit来写,你必要承袭TelluriumJavaTestCase.

public class GoogleSearchTestCase extends TelluriumJavaTestCase {

private static GoogleSearchModule gsm;

@BeforeClass

public static void initUi() {

gsm = new GoogleSearchModule();

gsm.defineUi();

}

@Before

public void connectToGoogle() {

connectUrl("http://www.google.com");

}

@Test

public void testGoogleSearch() {

gsm.doGoogleSearch("tellurium . ( Groovy ) Test");

}

@Test

public void testGoogleSearchFeelingLucky() {

gsm.doImFeelingLucky("tellurium automated Testing");

}

}

TestNG的案例类似,除了你要承袭TelluriumTestNGTestCase。假如用Groovy, 你必要承袭TelluriumGroovyTestCase.

Tellurium设置设置设备摆设摆设

Tellurium用一个设置设置设备摆设摆设文件TelluriumConfig.groovy来设置设置设备摆设摆设系统。它包括对Selenium办事器和Tellurium框架本身的设置设置设备摆设摆设,如:

tellurium{

//embedded selenium server configuration

embeddedserver {

//port number

port = "4445"

//whether to use multiple windows

useMultiWindows = false

runInternally = true

profile = ""

}

//event handler

eventhandler{

//whether we should check if the UI element is presented

checkElement = true

//wether we add additional events like "mouse over"

extraEvent = true

}

//data accessor

accessor{

//whether we should check if the UI element is presented

checkElement = false

}

connector{

//selenium server host

//please change the host if you run the Selenium server remotely

serverHost = "localhost"

//server port number the client needs to connect

port = "4445"

//base URL

baseUrl = "http://localhost:8080"

//Browser setting, valid options are

//*firefox [absolute path]

//*iexplore [absolute path]

//*chrome

//*iehta

browser = "*chrome"

}

datadriven{

dataprovider{

reader = "PipeFileReader"

}

}

test{

result{

reporter = "XMLResultReporter"

output = "Console"

filename = "TestResult.output"

}

exception{

captureScreenshot = true

filenamePattern = "Screenshot?.png"

}

}

uiobject{

builder{

//example:

SelectMenu="org.tellurium.builder.SelectMenuBuilder"

}

}

widget{

module{

//define your widget modules here, for example Dojo or ExtJs

included=""

}

}

}

此外,Tellurium还供给了措施让用户来覆盖Tellurium中的设置设置设备摆设摆设,

public class GoogleSearchModuleTestCase extends TelluriumJavaTestCase

{

static{

setCustomConfig(true, 5555, "*chrome", true, null);

}

...

}

您可能还会对下面的文章感兴趣: