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);
[[i] Last edited by 生如火花 on 2004-12-7 at 15:32 [/i]]
lousia 2004-11-22 17:03
[quote]Originally posted by [i]QA_BAY[/i] at 2004-11-22 04:46 PM:
变量申明 使用范围 使用时间 在何处申明
Auto 局部 函数结束
Static 局部 测试单元停止 函数,测试单元,模块
Public 全局 测试单元停止 函数,测试单元,模块
Extern 全局 测试单元停止 函数,测试单元 ... [/quote]
好东西。我从来没用过,能说的详细一点吗?举个例子吧,
欢迎大家加我,一起交流: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
[quote]Originally posted by [i]QA_BAY[/i] 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 ... [/quote]
如果不能确定窗口什么时候弹出,可以在脚本的最开始添加
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
[quote]Originally posted by [i]生如火花[/i] at 2004-11-24 10:42 PM:
如果不能确定窗口什么时候弹出,可以在脚本的最开始添加
define_popup_exception ("exception_name","function_name", "action_window" );
public function function_name(); ... [/quote]
[color=Red][font=宋体]这段代码我没理解,可能是我没有“scenario"的概念,可以让生如火花同志给我些指导吗,最好详细讲讲。[/font][/color]
肚皮 2005-3-16 13:50
[quote]Originally posted by [i]生如火花[/i] at 2004-11-24 10:42 PM:
如果不能确定窗口什么时候弹出,可以在脚本的最开始添加
define_popup_exception ("exception_name","function_name", "action_window" );
public function function_name(); ... [/quote]
[color=Red][font=宋体]这段代码我没理解,可能是我没有“scenario"的概念,可以让生如火花同志给我些指导吗,最好详细讲讲。[/font][/color]
生如火花 2005-3-18 13:01
[quote]Originally posted by [i]肚皮[/i] at 2005-3-16 01:50 PM:
[color=Red][font=宋体]这段代码我没理解,可能是我没有“scenario"的概念,可以让生如火花同志给我些指导吗,最好详细讲讲。[/font][/color] [/quote]
请看这里
[url]http://bbs.51testing.com/viewthread.php?tid=5223&fpage=1&highlight=%2B%C9%FA%C8%E7%BB%F0%BB%A8[/url]
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);
}
-
[[i] Last edited by kai_top on 2005-9-20 at 01:18 [/i]]
kai_top 2005-8-18 15:04
modify
modify
[[i] Last edited by kai_top on 2005-9-20 at 01:15 [/i]]
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 ¹¦ÄÜ¿ª¹Ø²¿·Ö
# ·ï»Ëɽ
set_window ("·ï»Ëɽ", 2);
i=0;
count=0;
times=5;
while(i<times)
{
#Ëæ»ú²úÉú½øÐÐÏÂÒ»´Î¿ª¹Ø²Ù×÷µÈ´ýµÄʱ¼ä
x=int(rand()*5)+5;
#Ëæ»ú²úÉú½øÐÐÏÂÒ»´Î¿ª¹Ø²Ù×÷µÄÉ豸
y=int(rand()*9)+1;
#pause(x);
#pause(y);
wait(x);
set_window ("·ï»Ëɽ", 2);
button_press("vir_button"&y);
count=count+1;
wait(0.5);
if (win_exists("ÌáʾÐÅÏ¢")==E_OK)
{
set_window ("ÌáʾÐÅÏ¢", 1);
button_press ("È·¶¨");
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=="¿ØÖÆÉ豸")
{
report_msg(time&"¹Ø±ÕµÚ"&y&"·É豸³É¹¦");
#pause(text);
}
else
{
if (text=="ÍøÂç¹ÊÕÏ")
{
report_msg(time&"·þÎñ³ÌÐòËÀÁË»òÍøÂç¶Ï¿ª");
report_msg(text);
break;
}
else
{
report_msg(time&"³ÌÐò³öÏÖÒì³£");
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=="¿ØÖÆÉ豸")
{
report_msg(time&"´ò¿ªµÚ"&y&"·É豸³É¹¦");
#pause(text);
}
else
{
if (text=="ÍøÂç¹ÊÕÏ")
{
report_msg(time&"·þÎñ³ÌÐòËÀÁË»òÍøÂç¶Ï¿ª");
report_msg(text);
break;
}
else
{
report_msg(time&"³ÌÐò³öÏÖÒì³£");
report_msg(text);
#pause(text);
break;
}
}
}
}
wait(5);
time=time_str(get_time());
if (win_exists("ÌáʾÐÅÏ¢!")==E_OK)
{
report_msg(time&"·þÎñ³ÌÐòËÀÁË»òÍøÂç¶Ï¿ª");
break;
}
#Èç¹û¶ÔËùÓеÄÉ豸½øÐпª¹Ø²Ù×÷µÄ»°ÑÓʱ15Ã룬µ¥¸öÉ豸²»ÔÚÑÓʱ*/
if(y==10)
{
wait(10);
}
i++;
}
report_msg("set control"×&"times");
report_msg("total control"&count&"times");
#win_close("·ï»Ëɽ");
#part II ϵͳÆäËû¹¦Äܲ¿·Ö
对一个远程控制软件的测试,希望多多指点
wonew1228 2006-12-6 17:00
好贴!
感谢各位!
wonew1228 2006-12-19 16:56
顶一下,好东西不能让他沉了
pangge369 2006-12-20 16:37
好东西!受益不少呀!
lzq123335 2007-1-10 10:42
[quote]原帖由 [i]shyfish[/i] 于 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 ... [/quote]
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
顶!
页:
[1]