Crt自動化 測試 SecureCrt腳本 JS腳本
1、引言
Crt腳本的實現需要使用Crt定義好的各個對象的屬性和方法來實現,腳本函數系列將逐一介紹Crt腳本中最常使用的對象,對這些對象以層級關系畫出,本篇首先介紹頂級對象。crt的屬性和方法。屬性是一個靜態的對象,方法是具體執行的動作。屬性和方法底下還可以有子屬性和子方法,這個其實就和面向對象的編程方式很像,有些基礎的人應該會很快掌握。
2、關於腳本表頭
解釋在學習腳本函數前,先說說在腳本中頭兩行(必須寫在頭兩行,且最好不要有空格回車之類的字符)所必須添加的標識,這兩行標識告訴Crt當前執行的腳本需要使用什么解釋器進行解釋。其中language為語言,現支持Jscript、VBScript、Python、Perl,interface為接口,現在都是1.0,以下為示例,修改對應的語言即可
代碼
- JS
1 # $language = "JScript" 2 # $interface = "1.0"
- python
1 # $language = "Python" 2 # $interface = "1.0"
3、頂級對象'crt'的子屬性和方法
屬性 方法 Dialog GetActiveTab Screen GetScriptTab ScriptFullName GetTabCount Session GetTab Version Quit Window Sleep
3.1、屬性
3.1.1、Dialog
解釋定義了一個Dialog(對話框),通過這個對象,可以通過調用該對象的子屬性和方法實現對話框的相關功能。
代碼
- JS
1 var diaObj = crt.Dialog;
3.1.2、Screen
解釋定義Screen(屏幕)對象,該對象是整個腳本中的靈魂,包含數據抓取、數據發送、等待數據等等重要功能都是有該對象的子屬性和方法實現的。
代碼
- JS
var scrObj = crt.Screen;
3.1.3、ScriptFullName
解釋該對象返回當前執行腳本的全名,其中包含腳本路徑和腳本名,可以使用中文路徑和文件名。
代碼
- JS
var scrName = crt.ScriptFullName;
3.1.4、Session
解釋定義當前會話屬性,該屬性有許多很實用的屬性和方法可以使用。同樣作為后重點關注
代碼
- JS
var sessionObj = crt.Session;
3.1.5、Version
解釋返回當前Crt的軟件版本,通常該屬性用於比較版本新舊,以處理在不同版本上不能兼容的問題。
代碼
- JS
1 // 檢查Crt版本,如果低於7.3,則退出Crt。 2 crtVer = crt.Version; 3 if ( crtVer < 7.3 ) { 4 crt.Quit(); 5 }
3.1.6、Window
解釋返回當前程序的窗口對象,該對象下有子對象,可以實現諸如隱藏當前窗口等的功能。
代碼
- JS
1 var crtWin = crt.Window;
3.2、方法
3.2.1、GetActiveTab()
解釋Crt軟件的管理是多Tab的,該方法返回當前活躍狀態的Tab界面,該界面作為一個新的Tab屬性使用,而Tab屬性本身又有許多子屬性和方法,因此該方法也是比較實用的一個函數。
代碼
- JS
1 var actTab = crt.GetActiveTab();
3.2.2、GetScriptTab()
解釋獲取當前腳本執行的Tab對象,該對象有一些子對象和方法,通過獲取Tab頁面,可以輕松的實現在多個Tab中同時發送數據的功能。
代碼
- JS
1 // 獲取當前腳本執行的Tab,並獲取編號(Index從1開始) 2 var scriptTab = crt.GetScriptTab(); 3 var tabNum = scriptTab.Index; 4 // 在當前Tab上發送數據 5 scriptTab.Screen.Send("腳本執行的Tab是:"+tabNum);
3.2.3、GetTabCount()
解釋獲取當前總Tab數目,是一個數值類型返回值。
代碼
- JS
1 // 獲取總Tab數目 2 var tabCount = crt.GetTabCount();
3.2.4、GetTab(Index)
解釋獲取某個位置的Tab對象,該位置即為tab的Index,從1開始,即從當前Crt窗口的最左側Tab數起。
代碼
- JS
// 獲取指定編號的Tab對象 var tabCount = crt.GetTabCount(); var gTab = ""; // 從Tab1到所有Tab依次發送數據 for ( var i = 1 ; i <= tabCount; i++ ) { gTab = crt.GetTab(i); gTab.Screen.Send("當前Tab為:"+i); }
3.2.5、Sleep(millisecond)
解釋腳本暫停運行時間,millisecond:毫秒 該功能是極為常用的功能
代碼
- JS
1 // 獲取指定編號的Tab對象 2 var tabCount = crt.GetTabCount(); 3 var gTab = ""; 4 // 從Tab1到所有Tab依次發送數據 5 for ( var i = 1 ; i <= tabCount; i++ ) { 6 gTab = crt.GetTab(i); 7 // 暫停5秒再發送數據 8 crt.Sleep(5000); 9 gTab.Screen.Send("當前Tab為:"+i); 10 }
3.2.6、Quit()
解釋退出Crt軟件。(不是退出腳本,是直接退出軟件。)
代碼
JS
1 // 如果直接使用crt.Quit的話只要有會話是激活的,那么就會有彈窗出來,因此,可以使用for循環,先將所有Tab斷連,再退出。 2 3 // 斷連所有Tab 4 var tabCount = crt.GetTabCount(); 5 var gTab = ""; 6 for ( var i = 1 ; i <= tabCount; i++ ) { 7 gTab = crt.GetTab(i); 8 gTab.Session.Disconnect(); 9 } 10 // 此時可以直接退出Crt 11 crt.Quit()
總結
1. 在寫腳本時一定要添加前言所述的腳本頭部兩行,且注意最好不要有空格和回車等。 2. crt的最常用最基本的二級屬性和方法上面都已經介紹完了,總的一個應用原則是屬性是靜態的,在使用時不需要加(),而方法是動態的(實際上就是函數),因此在調用時需要用(),有些方法是有參數,有些是沒有的,在使用時也要注意。 3. 希望通過本篇對二級屬性和方法做一個全面的講解,可以更清楚的知道crt函數中都有哪些具體的函數,哪些可能是重點,哪些可能最常用,以及如何使用這些函數,都可以根據上面的解釋和腳本實現中獲取相關信息。 4.但凡有子屬性或子方法的二級屬性和方法,都可以通過后面教程中的寫法直接引入,不需要每次都賦值給一個對象使用。 5.希望各位看官可以從中學到些東西,本篇拋磚引玉就到此結束了。下一篇將會就二級屬性'Dialog'做詳細說明,敬請期待...