//如果找到多个TestObject满足条件,
else if(foundTOs.length>1)
{
throw new AmbiguousRecognitionException("Found multi-TestObject with
"+property1+"<"+value1+">,"+property2+"<"+value2+">");
}
//返回唯一的查找结果
return foundTOs[0];
}
与此同时,针对脚本SearchLotusLink里为选择操作对象而记录下的的鼠标操作,及验证点。我们也同样对其进行抽象,攫取其中的关键行为,代之以程序动作。比如:
browser_htmlBrowser(document_htmlDocument(),DEFAULT_FLAGS).click(atPoint(455,108));
browser_htmlBrowser(document_htmlDocument(),DEFAULT_FLAGS).inputKeys("www.ibm.com{ENTER}");
这两行脚本的操作是在浏览器的地址栏内输入URL,再按下回车。这个动作如果借助Rational Functional Tester所提供的API来表示,可以简化很多:
browser_htmlBrowser(document_htmlDocument(),DEFAULT_FLAGS).loadUrl("www.ibm.com");
再以程序的方式生成验证点并验证,不与脚本相关的数据结构发生干系。经过优化和精炼后的脚本SearchLotusLink如下:即使将来页面布局和结构发生变化,这段脚本仍然能正确地定位到搜索输入框和搜索按钮。
public void testMain(Object[] args)
{
startBrowser("");
document_htmlDocument().waitForExistence();
// HTML Browser
browser_htmlBrowser(document_htmlDocument(),DEFAULT_FLAGS).loadUrl("www.ibm.com");
// Document: IBM United States: http://www.ibm.com/us/
text_q().waitForExistence();
text_q().setText("lotus");
button_search().click();
link_httpWwwLotusCom().waitForExistence();
IFtVerificationPoint vp1 =
vpManual("vp1","http://www.lotus.com/",link_httpWwwLotusCom().getProperty(".href"));
vp1.performTest();
}
四 摆脱语言的束缚
如今的软件大多都要求支持"全球化",能够适应多种语言环境。就用户界面而言,需要在不同的语言环境中展示出本地语言界面。多语言环境下的人工测试往往不尽如人意,自动化测试反而更为迅速和准确。
文章来源于领测软件测试网 https://www.ltesting.net/