領測軟件測試網
#與第一種情況的不同之處就是call語句需要傳遞參數了,括號中的1,2分別對應我們在notepadinput腳本設置中新建的兩個input parameters:notepadinput1,notepadinput2。下面的彈出框分別顯示notepadinput中的兩個output parameters:result1,result2。
###########################################################################
接下來我們看看子腳本notepadinput是怎樣處理傳入和返回參數的:
set_window ("無標題 - 記事本", 1); edit_set_insert_pos ("Edit", 0, 0); obj_type ("Edit",notepadinput1); obj_type ("Edit",notepadinput2);
edit_get_text("Edit",text); result1 = text; result2 = result1+1; treturn result2+1; |
#obj_type函數中輸入內容部分直接用腳本的傳入參數代替。Edit_get_text函數取得的內容賦值給腳本的傳出參數,最后腳本還可以使用treturn語句返回一個腳本的返回值。
###########################################################################
執行腳本后可以看到notepadinput1=1,notepadinput2=2,text=12,result1=12,result2=13,腳本的返回值賦給main中的re1=14。
從這個例子可以看出,如果我們希望給腳本傳遞并得到多個參數,可以使用腳本屬性里的參數設置來達成,而無須像Robot一樣對腳本中的Function或Sub Declare(Robot對腳本的調用Callscrīpt是不能有參數的)。這就是WR腳本調用的一個好處。
第三種情況:調用另一個腳本中的函數,需要多個函數中的返回值
腳本中不僅可以錄制操作,同樣也可以編寫函數。還是新建一個子腳本Function,需要在腳本屬性中設置test type為Compiled Module(試驗了一下發現不設置也沒有報錯)不用設置傳入傳出參數。在Function中編寫如下函數:
function notepad1(in notepadinput,out result1,out result2) #函數的參數有三種類型:in為傳入參數,out為傳出參數,inout為傳入和傳出參數 { static text; #記住這里需要聲明text,因為下面的edit_get_text函數用到了這個參數,但本函數中沒有
# 無標題 - 記事本 set_window ("無標題 - 記事本", 1); edit_set_insert_pos ("Edit", 0, 0); obj_type ("Edit",notepadinput); edit_get_text("Edit",text); result1 = text+1; result2 = text+2; } function notepad2(in notepadinput) { static text;
# 無標題 - 記事本 set_window ("無標題 - 記事本", 3); edit_set_insert_pos ("Edit", 0, 0); obj_type ("Edit",notepadinput); edit_get_text("Edit", text); return text; #return為函數中的返回值 } |
###########################################################################
主腳本main中同樣需要做一些改動:
GUI_close_all(); if (GUI_load(".\\notepad.gui")!=0) { report_msg("gui load error"); } else { report_msg("gui load ok"); } if (invoke_application("c:\\windows\\system32\\notepad.exe","","",SW_SHOW)!=0) { report_msg("notepad error"); } else { report_msg("notepad ok"); } load(".\\function"); #這個是加載編譯模塊,加載后就可以在主腳本中直接使用編譯模塊里的函數了 re1 = notepad1(15,result1,result2); #直接使用Function中的函數notepad1,15為傳入參數,result1和result2為傳出參數。 re2 = result1; re3 = result2; re4 = notepad2(8); #使用Function中的notepad2函數 |
文章來源于領測軟件測試網 http://www.kjueaiud.com/