rendaoyuan 2007-5-22 12:13
WinRunner的问题搜集
1.WR是否支持vs.net
根据Mercury的介绍,他们的对.Net的支持转移到QuickTest Pro上了,如果你需要自动化测试.Net程序(不是web的),建议用
QuickTestPro。也就是说wr不支持vs.net开发的程序
2.我对比两个文件file1.txt和file2.txt,文本内容如下
file1.txt 内容如下:
10523 8315 6804 8387 3643 4550 3457 3649
file2.txt内容如下:
190176 155737 117417 145194 65314 81431 64522 63324
代码如下:file_compare("C:\\file1.txt","C:\\file2.txt","save");
为什么每次对比这两个文件结果都是通过的。
答:这个问题的原因在于它在前面的脚本中对文件进行了操作,没有关闭,所以这段代码运行总是通过
3.如何在winRunner中用Windows的API函数
在使用该API函数前需要先加载该函数然后声明API函数,代码如下
load_dll("user32.dll");
extern int PostMessageA(in long, in long, in long, in long);
win_get_info("{class:window, MSW_class:AfxMDIFrame42, label:\"!WinRunner.*\"}", "handle", hWnd);
PostMessageA(hWnd, 16, 0, 0);
请在尝试以上代码的时候,保存脚本,呵呵!
4.怎样处理跟踪键盘操作?
答:下边的代码希望对你有帮助
function GetKeyStatus(in vKey){
auto pid, thread_id, win_desc, hWnd, KeyState, win_log_name, win_full_desc, focused_obj_desc;
win_desc = "{active:1}";
if (win_exists(win_desc)==0) {
win_get_desc(win_desc, "", "", "", win_full_desc);
GUI_map_get_logical_name( win_full_desc, "", win_log_name, "bla");
win_get_info(win_desc, "handle", hWnd);
pid = GetWindowThreadProcessId(hWnd, NULL);
thread_id=GetCurrentThreadId();
AttachThreadInput(pid,thread_id,TRUE);
KeyState=GetKeyState (vKey);
AttachThreadInput(pid,thread_id,FALSE);
if (KeyState < 0)
return(0); # Key is pressed
else
return (1); # Key is not pressed
}
else
return (-1); # No active window found, so cannot determine key state
}
.WinRunner如何处理excel?答:其实解决方法有很多,这里列举两种。
一.利用其他语言特性开发出dll提供给winrunner使用(vb,vc,delphi等)
二.在其他环境中实现,用winrunner调用
第一种我在这里不举例子了,第二种我利用vbs往excel中赋值给大家提供一种思路,代码如下:
'vbs中的代码
Dim ExcelApp
Dim itemX
if WScript.Arguments.Count < 2 then
r = msgbox("Requires 2 arguments", 48, "change_sheet")
else
dim fso
set fso = createobject("scripting.filesystemobject")
xlBook = fso.GetAbsolutePathName(WScript.Arguments(0))
xlSheet = WScript.Arguments(1)
set fso = Nothing
Set ExcelApp = CreateObject("Excel.Application")
ExcelApp.Workbooks.Open(xlBook)
Set itemX = ExcelApp.ActiveWorkbook.Worksheets.Item(xlSheet)
itemX.Activate
excelApp.ActiveWorkbook.Worksheets(xlSheet).Range("A1").Select
excelapp.ActiveCell.FormulaR1C1 = "1"
excelApp.ActiveWorkbook.Worksheets(xlSheet).Range("B1").Select
excelapp.ActiveCell.FormulaR1C1 = "2"
excelApp.ActiveWorkbook.Worksheets(xlSheet).Range("c1").Select
excelapp.ActiveCell.FormulaR1C1 = "3"
ExcelApp.ActiveWorkbook.Save()
ExcelApp.ActiveWorkbook.Close(1)
ExcelApp.Quit()
Set itemX = Nothing
Set ExcelApp = Nothing
end if
winrunner中的调用代码:
dos_system("wscript \"C:\\excel_sheet.vbs\" \"C:\\SheetBook.xls\" \"Sheet2\"");
2.在WinRunner中如何实现得到transaction时间?
答:一般情况下transaction的时间只能在最后结果中得到,如何在脚本得到这个时间呢,下边的代码可以
帮助你:
public transactions[];
function start_my_transaction(in transaction_name)
{
transactions[transaction_name] = get_time();
tl_step("Start transaction: \"" & transaction_name & "\"",PASS,"Timestamp: " &
transactions[transaction_name]);
return (transactions[transaction_name]);
}
function end_my_transaction(in transaction_name)
{
auto end_time = get_time();
auto rc;
if(transactions[transaction_name] == "")
{
tl_step("End transaction: \"" & transaction_name & "\"",FAIL,"Transaction was
never started.");
rc = -1;
}
else
tl_step("End transaction: \"" & transaction_name & "\"",PASS,"Elapsed Time: "
& (rc = end_time - transactions[transaction_name]));
delete transactions[transaction_name];
return rc;
}
start_my_transaction("my_transaction");
wait(2);
rc = end_my_transaction("my_transaction");
pause("Elapsed time = " & rc);
[size=2]北京地区对软件测试感兴趣的朋友可以和我交流:qq:306513768
我的博客:[/size][url=http://www.51testing.com/?uid/110105][size=2]http://www.51testing.com/?uid/110105[/size][/url]
[size=2]友情链接:[/size][url=http://www.diytest.net][size=2]www.diytest.net[/size][/url]
[size=4][/size]
[[i] 本帖最后由 rendaoyuan 于 2007-7-4 15:16 编辑 [/i]]
weiwei555 2007-6-20 15:01
[color=red] tl_step("Start transaction: \"" & transaction_name & "\"",PASS,"Timestamp: " &
transactions[transaction_name]);[/color]
这个tl_step()函数是你自己写还是WR自带的啊???急,谢谢
我把你这整段代码copy进去WR报识别不了这个函数
lantianwei 2007-6-28 16:02
[quote]原帖由 [i]weiwei555[/i] 于 2007-6-20 15:01 发表 [url=http://bbs.51testing.com/redirect.php?goto=findpost&pid=575245&ptid=76854][img]http://bbs.51testing.com/images/common/back.gif[/img][/url]
tl_step("Start transaction: \"" & transaction_name & "\"",PASS,"Timestamp: " &
transactions);
这个tl_step()函数是你自己写还是WR自带的啊???急,谢谢
我把你这整段代码copy进去WR报识别不了 ... [/quote]
TL——STEP(“STEPNAME”,PASS,“DESCRIPTION”)这个函数是WR自带的,是可以运行的。你再试试看
jialebihaidao 2007-7-2 08:56
正在学习Winrunner,学习一下!
dtbyuan 2007-7-2 15:39
回复 #1 rendaoyuan 的帖子
不错,这个顶好~~~~~
jialebihaidao 2007-7-15 08:42
正在学习winrunner,楼主的帖子对我很有帮助
yanghua135 2007-7-24 09:26
hao 谢谢
chaoweiliang 2007-7-25 14:07
感谢了楼主,建议加精
jialebihaidao 2007-7-30 19:42
感觉有点乱
wenmei198552 2007-8-27 20:16
真是一个学习的 好地方 sdlkfj3
jialebihaidao 2007-8-30 08:05
国内大部分公司都在做项目,感觉功能测试工具没有用武之地
monkeybear 2007-10-5 19:20
回复 6# 的帖子
分是哪里来的?怎么能有呢?
cc_test 2007-10-25 16:37
此文与[url]http://bbs.51testing.com/thread-24900-1-1.html[/url]帖子中的内容一样。。。。。。
michell25 2007-11-1 16:18
看不懂
朱火远 2007-11-5 10:34
请问各位高手,Winrunner能否在64位XP系统下安装运行吗
关于winrunner的兼容性问题,winrunner能支持的系统有哪些?在Vista ,64位XP,98,95等系统下能安装运行吗?[size=7][/size]
muyang327 2007-12-29 10:41
支持一下,辛苦。:)
zkfxysy 2008-1-11 14:25
谢谢了,真不问题太多了,都不知道怎么解决,学习~~~~
chlong200 2008-2-22 15:35
支持下
shuishixingyu 2008-3-25 11:17
不错,要是有例子更好