CnPack Forum


 
Subject: 一种自动界面测试或软件自动演示的方法。
zzzl (早安的空气)
版主
Rank: 7Rank: 7Rank: 7



UID 590
Digest Posts 0
Credits 399
Posts 199
点点分 399
Reading Access 100
Registered 2004-11-29
Status Offline
Post at 2010-11-13 23:51  Profile | Blog | P.M.  | QQ
一种自动界面测试或软件自动演示的方法。

思路很简单,就是用timer,当达到触发条件时,执行“脚本”。
这个方法的好处是把自动演示代码集中放在一起了。


unit autoDemoUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, Generics.Collections;

type

CAutoDemo=class
public type
        TScript=TPair<TFunc<Integer>, TFunc<Integer, Boolean>>;
private
        fSs: TQueue<TScript>;
        fTimer: TTimer;
        procedure Timer1Timer(Sender: TObject);
public
        constructor create;
        destructor Destroy; override;
        procedure add(trigger: TFunc<Integer>; fun: TFunc<Integer, Boolean>);
end;

implementation

{ CAutoDemo }

procedure CAutoDemo.add(trigger: TFunc<Integer>; fun: TFunc<Integer, Boolean>);
begin
fSs.Enqueue(TScript.Create(trigger, fun));
fTimer.Enabled:=True; //新加入脚本,要确保引擎启动。
end;

constructor CAutoDemo.create;
begin
fSs:=TQueue<TScript>.Create;
fTimer:=TTimer.Create(Application);
fTimer.OnTimer:=self.Timer1Timer;
end;

destructor CAutoDemo.Destroy;
begin
fSs.Free;
  inherited;
end;

procedure CAutoDemo.Timer1Timer(Sender: TObject);
var
        i: Integer;
        par: Integer;
        script: CAutoDemo.TScript;
begin
if fSs.Count>0 then begin
        script:=fSs.Peek();
        par:=script.Key();
        if par<>0 then begin
                fTimer.Enabled:=False;
                if script.Value(par) then
                        fSs.Dequeue;
                fTimer.Enabled:=True;
                end;
        script.key:=nil;
        script.Value:=nil;
        end
else begin
        fTimer.Enabled:=False;
        end;
end;

end.

用法,add()就是把“脚本”加入了
第一个参数是触发条件,参数返回值非零时表示触发成功
第二个参数是执行内容,它带有一个par参数,就是第一个参数的返回值

以上代码和示例放在附件里了。


Attachment: [全部代码] autoDemo.rar (2010-11-13 23:51, 494.01 K)
Download count 152
Top
 




All times are GMT++8, the time now is 2024-3-29 16:14

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 0.006234 second(s), 9 queries , Gzip enabled

Clear Cookies - Contact Us - CnPack Website - Archiver - WAP