51Testing软件测试论坛

标题: WR代码交流贴 [打印本页]

作者: QA_BAY    时间: 2004-11-22 16:44
标题: WR代码交流贴
希望大家拿自己平时写的代码出来交流一下吧,
让大家一起进步!
作者: QA_BAY    时间: 2004-11-22 16:46
变量申明 使用范围 使用时间 在何处申明
Auto 局部 函数结束
Static 局部 测试单元停止 函数,测试单元,模块
Public 全局 测试单元停止 函数,测试单元,模块
Extern 全局 测试单元停止 函数,测试单元,模块
这四个经常用在写FUNCTION时用到!
作者: 生如火花    时间: 2004-11-22 16:52
支持一下
###用于生成一个小于等于k的整数(k>1)
public function random(k,n)
{
n=int((k-1)*rand()+1);
report_msg("n="n);
return n;
}
random(1000,n);

#####返回k整除m的结果
public function div(k,m,n)
{
n=(k-k%m)/m;
report_msg(n);
return n;
}
div(k,m,n);

[ Last edited by 生如火花 on 2004-12-7 at 15:32 ]
作者: lousia    时间: 2004-11-22 17:03
Originally posted by QA_BAY at 2004-11-22 04:46 PM:
变量申明 使用范围 使用时间 在何处申明
Auto 局部 函数结束
Static 局部 测试单元停止 函数,测试单元,模块
Public 全局 测试单元停止 函数,测试单元,模块
Extern 全局 测试单元停止 函数,测试单元 ...


好东西。我从来没用过,能说的详细一点吗?举个例子吧,
欢迎大家加我,一起交流:lousia_qian@hotmail.com
作者: 生如火花    时间: 2004-11-22 17:10
有时间发贴等别人告诉你某个函数的用法,还不如自己在TSL帮助里学习,要想学到东西,就不能太懒的。不是讨论代码的内容应该发新贴。这样便于其他人的交流
作者: shyfish    时间: 2004-11-22 17:53
贴一段,很喜欢用Data table的:
dataTable = "dialNum.xls";
ddt_open(dataTable, DDT_MODE_READ);
ddt_get_row_count(dataTable, ddtRowCount);
for(ddtIndex = 1; ddtIndex <= ddtRowCount; ddtIndex++)
{
                ddt_set_row(dataTable, ddtIndex);
        number = ddt_val(dataTable, "DialNum");
        divNum = 1000000000;
        for(i = 0; i < 10; i++)
        {
                curNum = int(number / divNum);
                switch(curNum)
                {
                        case 0:  button_press("Button0"); break;
                        case 1:  button_press("Button1"); break;
                        case 2:  button_press("Button2"); break;
                        case 3:  button_press("Button3"); break;
                        case 4:  button_press("Button4"); break;
                        case 5:  button_press("Button5"); break;
                        case 6:  button_press("Button6"); break;
                        case 7:  button_press("Button7"); break;
                        case 8:  button_press("Button8"); break;
                        case 9:  button_press("Button9"); break;
                }
                number = number % divNum;
                divNum = int(divNum / 10);
        }
}
ddt_close(dataTable);

用途:
应用程序上有10个按钮(自定义的,被我Virtual成了Button1-10),在data table(自定义的Datable,没有从数据库导入)里面存的是10位的整数:比如1234567890,然后根据该整数来依次序地按对应的按钮;如对于1234567890依次按Button1, Button2.....
希望大家有什么对于Data Table的使用心得拿出来交流交流啊
作者: xob    时间: 2004-11-22 21:16
tl_step_once

report_msg

很好用的,呵呵
作者: QA_BAY    时间: 2004-11-23 22:13
检测一个窗口的弹出!
iResult = win_exists("prjGolf");
if (iResult == E_OK)
{
    set_window ("prjGolf", 0);
        obj_type ("是(Y)","sdssss");
        button_press ("否(N)");}
        set_window("预定及客人管理-新预定_2", 1);
               obj_wait_bitmap("ThunderRT6CommandButton_3_1", "Img1", 1);
               button_press ("ThunderRT6CommandButton_3_1");}
else
      return;
作者: 生如火花    时间: 2004-11-24 22:42
Originally posted by QA_BAY at 2004-11-23 10:13 PM:
检测一个窗口的弹出!
iResult = win_exists("prjGolf");
if (iResult == E_OK)
{
    set_window ("prjGolf", 0);
        obj_type ("是(Y)","sdssss");
        button_press ...

如果不能确定窗口什么时候弹出,可以在脚本的最开始添加
define_popup_exception ("exception_name","function_name", "action_window" );
public function function_name();
{
.....#检测窗口并做出操作。
}
exception_on("exception_name");
作者: QA_BAY    时间: 2004-11-25 22:41
#        Function:                                getRandom
#        Purpose:        Generate integer random numbers between a range, and place    them in an output array/
#        Parameters:                in Minimum (integer), in Maximum(integer), out RandomArray (array that holds integers)
#        Return Values:         Numeric Error codes: 0: OK; -1: error



load("win32api");

public function getRandom(in iMin, in iMax, out aRand[]) {
        auto iRange, i;
        if (iMin < 0 || iMin > iMax || (iMin + iMax)==0)
                return -1;
        if (int(iMin) != iMin || int(iMax) != iMax)
                return -1;
        iRange=(iMax-iMin) + 1;
        srand(GetTickCount());
        for (i=0; i<iRange; i++)
                aRand[i] = int(rand()*iRange) + iMin;
        return 0;
        }


#When used with the following calling code, random output listings were created.
if (getRandom(1,5,aRnd)==E_OK)
{
    buf="";
        for (i=0; i<10; i++)
                buf = buf & " " aRnd[i];
        print(buf);
        }
texit;

这是WR中的一个例子,
本人试过了可以运行,
你们可以copy到你的机子上运行.
getRandom()里面的数据可以改变!
大家一起学习
作者: mojinde    时间: 2005-1-26 11:50
标题: 贴一段吧
在51TESTING,这么久了,只索取,不给予,不好意思,这是在生如火花的指导下完成的:主要作用是检查输入框对特殊字符的控制
# ThunderRT6FormDC
        set_window ("ThunderRT6FormDC", 1);
        button_press ("新建[N]");

# 托运客户档案
#定义非法字符输入字段
ff="12#%$#^$%&%^"
ff1="12345678"
#  注:若要用ff来测试的话,就把(set_window "提示",和button_press ("确定")注销掉)
#把ff分别输入到以下的输入框
        set_window ("托运客户档案", 3);
        edit_set ("ThunderRT6TextBox", "1");
        obj_type ("ThunderRT6TextBox_1", ff);
        button_press ("保存[S]");
#弹出非法字符输入的提示信息
if(win_exists("石家庄市汽车道路货物运输企业信息管理系_0")==E_OK)
{
    report_msg("输入的字符不合法!");
#关闭提示窗口
    win_close("石家庄市汽车道路货物运输企业信息管理系_0");
}
    else report_msg("输入的字符合法.");
# 提示
# set_window ("提示", 2);
#        button_press ("确定");
# 托运客户档案
        set_window ("托运客户档案", 1);
        button_press ("退出[E]");
我还是想说一声:谢谢生如火花!
作者: 肚皮    时间: 2005-3-16 13:44
Originally posted by 生如火花 at 2004-11-24 10:42 PM:

如果不能确定窗口什么时候弹出,可以在脚本的最开始添加
define_popup_exception ("exception_name","function_name", "action_window" );
public function function_name(); ...

这段代码我没理解,可能是我没有“scenario"的概念,可以让生如火花同志给我些指导吗,最好详细讲讲。
作者: 肚皮    时间: 2005-3-16 13:50
Originally posted by 生如火花 at 2004-11-24 10:42 PM:

如果不能确定窗口什么时候弹出,可以在脚本的最开始添加
define_popup_exception ("exception_name","function_name", "action_window" );
public function function_name(); ...

这段代码我没理解,可能是我没有“scenario"的概念,可以让生如火花同志给我些指导吗,最好详细讲讲。
作者: 生如火花    时间: 2005-3-18 13:01
Originally posted by 肚皮 at 2005-3-16 01:50 PM:

这段代码我没理解,可能是我没有“scenario"的概念,可以让生如火花同志给我些指导吗,最好详细讲讲。

请看这里
http://bbs.51testing.com/viewthr ... A%C8%E7%BB%F0%BB%A8
作者: sinpa    时间: 2005-4-8 14:16
标题: 我顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶!!!!!!!

作者: credit_hly    时间: 2005-6-23 20:09
受益非浅!!!
作者: kai_top    时间: 2005-7-22 17:47
看了就很羡慕,认真学习。
作者: simen12    时间: 2005-8-10 11:47
大开眼界,服!我要努力呀
作者: PK_DUTBSK    时间: 2005-8-12 12:07
..........努力看 啊
作者: rien2128    时间: 2005-8-12 12:37
真是厉害啊,高手就是高手。
作者: hihihaha910    时间: 2005-8-13 09:32
学习了WR一段时间了,再来看这些贴,真是受益非浅
作者: kai_top    时间: 2005-8-18 14:55
呵呵,看了生如火花的代码,在实践中学以致用,嘿嘿
#以下是我的实际运用,主要功能是:随机生成500个大于1000小于2000的数值,如果在这些数值生成过程中,生成重复数值,此时如果系统弹出错误窗口,代码就进行错误数统计,并且直接关闭这个窗口,然后继续生成数值;(这段代码可以用在登录窗口(如暴力**),可以用在自动生成对象名称等)呵呵,代码很简单;
public function random(k,n)
{
n=((k-1)*rand()+1000);
return(n);
}
for(i=1;i<=500;i++)
{
num=num+1
m=random(1000,n);
wait(1s);
if(win_exist("error_win_name")==E_OK)
{set_window("error_win_name",time);
static_get_text("lable_name",text);
tl_step("error_message",1,"error.content is "text";time is "num".");
button_press("button_name");
set_window("win_name",time);
}
else
{
set_window("win_name",time);
}
-

[ Last edited by kai_top on 2005-9-20 at 01:18 ]
作者: kai_top    时间: 2005-8-18 15:04
标题: modify
modify

[ Last edited by kai_top on 2005-9-20 at 01:15 ]
作者: kelly651    时间: 2005-8-22 15:21
好人啊.受益非浅呀...
作者: kelly651    时间: 2005-8-25 14:26
好人啊....继续啊
作者: xyuan007    时间: 2005-12-7 16:33
我也贴一个,读取xml文件并更新若干结点信息后保存到另一文件!
#¶ÁÈ¡xml1302Îļþ£¬²¢½«ÏàÓ¦ÐÅÏ¢¸üÐÂ
public function file1302read(in filepath,in mysoid,in mysid)
{

#´ò¿ª1302Îļþ       
        auto filename = filepath & "1302.xml";
        auto filename1;
       
        auto xml[];
        auto i = 0;
        auto j = 0;
        auto line;
        auto xyuan;
        auto pos;
         
        auto res = file_open(filename,0);

        if(res != E_OK)
        {
                printf("file 1302 open error!");
        }

#´ÓÎļþÖжÁ³öÄÚÈݲ¢Ð´ÈëÊý×é       
        while(file_getline(filename,line) == 0)
        {
                xml[i] = line;
                i++;
        }
       
        file_close(filename);
       
       
#¸üÐÂRequestID       
        for(j = 0; j < i; j++)
        {
                xyuan = xml[j];
               
                if( index(xyuan,"<RequestId>") > 0 )
                {
                        pos = index(xyuan,"<RequestId>");
                        xyuan = substr(xyuan,1,pos+10) & "front_" & get_time() & "</RequestId>";
                        xml[j] = xyuan;
                        break;
                }
        }

#¸üÐÂServiceOrderID       
        for(j = 0; j < i; j++)
        {
                xyuan = xml[j];
               
                if( index(xyuan,"<ServiceOrderId>") > 0 )
                {
                        pos = index(xyuan,"<ServiceOrderId>");
                        xyuan = substr(xyuan,1,pos+15) & mysoid & "</ServiceOrderId>";
                        xml[j] = xyuan;
                        break;
                }
        }               
       
#¸üÐÂServiceID       
        for(j = 0; j < i; j++)
        {
                xyuan = xml[j];
               
                if( index(xyuan,"<ServiceId>") > 0 )
                {
                        pos = index(xyuan,"<ServiceId>");
                        xyuan = substr(xyuan,1,pos+10) & mysid & "</ServiceId>";
                        xml[j] = xyuan;
                        break;
                }
        }       
       
#´ò¿ªÎļþ²¢Ð´ÈëÒѸüеÄÄÚÈÝ       
        filename1 = filepath & "13021.xml";
        res = file_open(filename1,1);
       
        if(res != E_OK)
        {
        tl_step("file 1302 write open",1,"file open error!");
        }
       
        for(j = 0; j < i; j++)
        {
                file_printf(filename1,xml[j],j+1);
        }
       
        file_close(filename1);       
}
作者: yangbinyan0216    时间: 2006-3-23 19:55
谢谢,都是好人啊,受益非浅
作者: chl6018    时间: 2006-3-29 16:44
# part 1 &sup1;&brvbar;&Auml;&Uuml;&iquest;&ordf;&sup1;&Oslash;&sup2;&iquest;·&Ouml;
# ·&iuml;&raquo;&Euml;&Eacute;&frac12;
        set_window ("·&iuml;&raquo;&Euml;&Eacute;&frac12;", 2);
        i=0;
        count=0;
        times=5;
        while(i<times)
        {
        #&Euml;&aelig;&raquo;ú&sup2;ú&Eacute;ú&frac12;&oslash;&ETH;&ETH;&Iuml;&Acirc;&Ograve;&raquo;&acute;&Icirc;&iquest;&ordf;&sup1;&Oslash;&sup2;&Ugrave;×÷&micro;&Egrave;&acute;&yacute;&micro;&Auml;&Ecirc;±&frac14;&auml;
        x=int(rand()*5)+5;
        #&Euml;&aelig;&raquo;ú&sup2;ú&Eacute;ú&frac12;&oslash;&ETH;&ETH;&Iuml;&Acirc;&Ograve;&raquo;&acute;&Icirc;&iquest;&ordf;&sup1;&Oslash;&sup2;&Ugrave;×÷&micro;&Auml;&Eacute;è±&cedil;
        y=int(rand()*9)+1;
        #pause(x);
        #pause(y);
        wait(x);
        set_window ("·&iuml;&raquo;&Euml;&Eacute;&frac12;", 2);
        button_press("vir_button"&y);
        count=count+1;
        wait(0.5);
       
        if (win_exists("&Igrave;á&Ecirc;&frac34;&ETH;&Aring;&Iuml;&cent;")==E_OK)
        {
        set_window ("&Igrave;á&Ecirc;&frac34;&ETH;&Aring;&Iuml;&cent;", 1);
        button_press ("&Egrave;·&para;¨");
       
        wait(2);
                if (win_exists("Afx:400000:0:10011:110005f:0")==E_OK)
                {
                win_get_text("Afx:400000:0:10011:110005f:0", text);
                text=substr(text,1,4);
                time=time_str(get_time());
               
                        if (text=="&iquest;&Oslash;&Ouml;&AElig;&Eacute;è±&cedil;")
                        {
                                report_msg(time&"&sup1;&Oslash;±&Otilde;&micro;&Uacute;"&y&"&Acirc;·&Eacute;è±&cedil;&sup3;&Eacute;&sup1;&brvbar;");
                                #pause(text);
                        }
                        else
                                {
                                if (text=="&Iacute;&oslash;&Acirc;&ccedil;&sup1;&Ecirc;&Otilde;&Iuml;")
                                        {
                                        report_msg(time&"·&thorn;&Icirc;&ntilde;&sup3;&Igrave;&ETH;ò&Euml;&Agrave;&Aacute;&Euml;&raquo;ò&Iacute;&oslash;&Acirc;&ccedil;&para;&Iuml;&iquest;&ordf;");
                                        report_msg(text);
                                        break;
                                        }
                                else
                                        {
                                        report_msg(time&"&sup3;&Igrave;&ETH;ò&sup3;&ouml;&Iuml;&Ouml;&Ograve;ì&sup3;&pound;");
                                        report_msg(text);
                                        #pause(text);
                                        break;
                                        }
                                }
                }
                               
        }
       
        else
        {

        wait(2);
                if (win_exists("Afx:400000:0:10011:110005f:0")==E_OK)
                {
                win_get_text("Afx:400000:0:10011:110005f:0", text);
                text=substr(text,1,4);
                time=time_str(get_time());
                        if (text=="&iquest;&Oslash;&Ouml;&AElig;&Eacute;è±&cedil;")
                        {
                                report_msg(time&"&acute;ò&iquest;&ordf;&micro;&Uacute;"&y&"&Acirc;·&Eacute;è±&cedil;&sup3;&Eacute;&sup1;&brvbar;");
                                #pause(text);
                        }
               
                        else
                        {
                        if (text=="&Iacute;&oslash;&Acirc;&ccedil;&sup1;&Ecirc;&Otilde;&Iuml;")
                                {
                                report_msg(time&"·&thorn;&Icirc;&ntilde;&sup3;&Igrave;&ETH;ò&Euml;&Agrave;&Aacute;&Euml;&raquo;ò&Iacute;&oslash;&Acirc;&ccedil;&para;&Iuml;&iquest;&ordf;");
                                report_msg(text);
                                break;
                                }
                        else
                                {
                                report_msg(time&"&sup3;&Igrave;&ETH;ò&sup3;&ouml;&Iuml;&Ouml;&Ograve;ì&sup3;&pound;");
                                report_msg(text);
                                #pause(text);
                                break;
                                }
                        }
                        }
               
        }
       
        wait(5);
        time=time_str(get_time());
        if (win_exists("&Igrave;á&Ecirc;&frac34;&ETH;&Aring;&Iuml;&cent;!")==E_OK)
        {
                report_msg(time&"·&thorn;&Icirc;&ntilde;&sup3;&Igrave;&ETH;ò&Euml;&Agrave;&Aacute;&Euml;&raquo;ò&Iacute;&oslash;&Acirc;&ccedil;&para;&Iuml;&iquest;&ordf;");
                break;
        }
        #&Egrave;&ccedil;&sup1;&ucirc;&para;&Ocirc;&Euml;ù&Oacute;&ETH;&micro;&Auml;&Eacute;è±&cedil;&frac12;&oslash;&ETH;&ETH;&iquest;&ordf;&sup1;&Oslash;&sup2;&Ugrave;×÷&micro;&Auml;&raquo;°&Ntilde;&Oacute;&Ecirc;±15&Atilde;&euml;&pound;&not;&micro;&yen;&cedil;&ouml;&Eacute;è±&cedil;&sup2;&raquo;&Ocirc;&Uacute;&Ntilde;&Oacute;&Ecirc;±*/
        if(y==10)
        {
        wait(10);
        }
       
        i++;
        }
        report_msg("set control"&times&"times");
        report_msg("total control"&count&"times");
        #win_close("·&iuml;&raquo;&Euml;&Eacute;&frac12;");
       
        #part II &Iuml;&micro;&Iacute;&sup3;&AElig;&auml;&Euml;&ucirc;&sup1;&brvbar;&Auml;&Uuml;&sup2;&iquest;·&Ouml;



对一个远程控制软件的测试,希望多多指点
作者: wonew1228    时间: 2006-12-6 17:00
标题: 好贴!
感谢各位!
作者: wonew1228    时间: 2006-12-19 16:56
顶一下,好东西不能让他沉了
作者: pangge369    时间: 2006-12-20 16:37
好东西!受益不少呀!
作者: lzq123335    时间: 2007-1-10 10:42
原帖由 shyfish 于 2004-11-22 17:53 发表
贴一段,很喜欢用Data table的:
dataTable = "dialNum.xls";
ddt_open(dataTable, DDT_MODE_READ);
ddt_get_row_count(dataTable, ddtRowCount);
for(ddtIndex = 1; ddtIndex <= ddtRowCoun ...



dataTable = "dialNum.xls";
ddt_open(dataTable, DDT_MODE_READ);
ddt_get_row_count(dataTable, ddtRowCount);
for(ddtIndex = 1; ddtIndex <= ddtRowCount; ddtIndex++)
{
                ddt_set_row(dataTable, ddtIndex);
        number = ddt_val(dataTable, "DialNum");
        divNum = 1000000000;
        for(i = 0; i < 10; i++)
        {
                curNum = int(number / divNum);
                 button_press("Button"&i);
                               number = number % divNum;
                divNum = int(divNum / 10);
        }
}
ddt_close(dataTable);

这样是否好些呢?
作者: jacky9947    时间: 2007-3-23 16:49
谢谢大家
作者: chinalkl    时间: 2007-6-21 17:53
到现在才发现测试,特别是WR的博大精深.
有很多代码都不知道是怎么输入进去的,是录制的时候自动生成的吗?
作者: chenghan1980    时间: 2008-7-14 12:12
很牛很强大
作者: peter.zheng    时间: 2008-8-14 11:21
顶!




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2