7.如何在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);
請在嘗試以上代碼的時候,保存腳本,呵呵!
8.怎樣處理跟蹤鍵盤操作?
答:下邊的代碼希望對你有幫助
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
}
9.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"");
10.在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);
文章來源于領測軟件測試網 http://www.kjueaiud.com/