TestComplete的低级过程模拟

发表于:2007-9-04 14:35

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:陈能技    来源:陈能技的质量感悟

低级过程vs高级过程
        在GUI自动化测试中,低级过程的录制和回放是第一代GUI自动化测试首先实现的,也是最简单的GUI自动化,它是指对鼠标和键盘时间的录制和回放。
 
        高级过程是指录制和回放都是基于控件的识别和操作进行的,每个脚本的执行都是控件对象的属性改变或事件触发。
 
        相对于高级过程的录制和回放,低级过程录制的脚本可读性差,不易于维护。但是低级过程有时候却是高级过程不可替代的,例如对有些不能识别的控件的操作。
 
TestComplete的低级过程录制
        TC跟其他GUI自动化测试工具一样,支持对鼠标和键盘事件的记录。TC会记录鼠标点击、键盘事件、鼠标移动和鼠标滚轮事件,同时也会记录事件之间的间隙时间,所有低级过程的回放会跟记录时的速度一样。
 
        事件记录可以是屏幕坐标方式的或是窗体坐标方式的记录。窗体坐标方式不依赖于窗体在屏幕的坐标,但是仅仅针对一个窗体。屏幕坐标方式模拟的用户操作是针对屏幕上出现的所有窗体。
 
        TC提供名为Low-Level Procedures Collection的project项,方便管理低级过程的脚本。
 
窗体相关与屏幕相关的区别
        低级过程可以用窗体坐标相关的方式或屏幕坐标相关的方式录制。
 
        窗体坐标相关方式不依赖窗体在屏幕上的位置,所以如果被测窗体的位置在每次测试都不一样的话,这种方式会很有用。
 
        屏幕坐标相关方式是以屏幕绝对坐标来录制的,这种方式在你需要模拟好几个窗体的低级过程时会很有用。
 
        通过参数指定低级过程的执行方式是以屏幕坐标方式还是窗体坐标方式。如下面脚本所示:
LLCollection1.LLP1.Execute(); // Screen-relative execution
// or
LLCollection1.LLP1.Execute(w1); // Window-relative execution
        通过在Execute方法中指定参数为某个具体窗体,表示以窗体坐标方式执行脚本。
 
创建低级过程
        可以直接在Project Explorer中添加低级过程,也可以在录制过程中插入低级过程脚本。
 
        每个低级过程的事件按时间顺序排列。每个低级过程事件都会有三项信息:
Event:事件类型,包括KeyUp, KeyDown, MouseMove, MouseUp, MouseDown , MouseWheel
Parameters:事件的参数,例如鼠标事件的鼠标坐标参数
Delay:事件之间的延迟
 
低级过程的执行
        可以直接在Project Explorer中选中Low-Level Procedures Collection下的某个低级过程脚本执行;也可以在脚本中调用,调用格式如下:
 
LowLevelProceduresCollection_name.LowLevelProcedure_Name.Execute
 
例如:LLCollection1.LL1.Execute();
 
        如果Execute方法中不加参数,则表示以屏幕坐标方式执行。如果希望为某个窗体指定执行低级过程,则可参考下面脚本:
 
var
  w : OleVariant;
begin
  w := Sys.Process('MyProcess').Window('MyWndClass', 'MyWndCaption',1); // Obtains the window
  LLCollection1.LL1.Execute(w);
end;
 
LLPlayer对象
        TC还另外提供了一个叫LLPlayer的对象,用于在脚本中模拟鼠标的按下和松开、鼠标滚轮的转动、键盘按键的按下和松开。
 
        LLPlayer对象的方法能让你像执行低级过程的执行一样。唯一的区别在于低级过程通常执行的是鼠标和键盘事件的序列,但是LLPlayer只能一次执行一个鼠标或键盘事件。
 
        TC可以把LowLevelProcedure中的低级事件转换到脚本中,用LLPlayer来顺序执行。这样做的好处是可以参数化低级过程的事件。LowLevelProcedure中的事件参数都是硬编码的,如果每次执行时参数需要变化,依赖于某些变量,则可以考虑转换成LLPlayer执行的脚本方式。
 
        LLPlayer对象的使用非常简单,例如,某个鼠标移动事件如下面脚本:
LLPlayer.MouseMove[466, 525, 10];
前两个参数是坐标,最后一个参数是延迟时间。
 
        需要注意的是TC在把LowLevelProcedure中的低级事件转换到LLPlayer方法时不区分事件是窗体坐标还是屏幕坐标,都统一按屏幕坐标处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号