这种框架的核心思想是把某个窗口的测试对象和相关业务核心操作都封装在VBS的类中,称之为GUI层,或者叫GUI-业务桥接层。例如下面的登录界面类:
' 登录界面类,封装了界面对象数据以及相关业务操作 Class Login Private m_htChildObjects 'As Scripting.Dictionary Public Property Get ChildObjects() Set ChildObjects = m_htChildObjects End Property Public Property Let ChildObjects(ByRef dic) Set m_htChildObjects = dic End Property ' 初始化界面对象并验证对象是否存在 Public Function Init() ChildObjects = CreateObject("Scripting.Dictionary") With ChildObjects .Add "LoginDialog", Dialog("text:=Login") .Add "AgentName", ChildObjects.Item("LoginDialog").WinEdit("attached text:=Agent Name:") .Add "Password", ChildObjects.Item("LoginDialog").WinEdit("attached text:=Password:") .Add "Submit", ChildObjects.Item("LoginDialog").WinButton("text:=OK") End With 'IsContextLoaded is a function that iterates through the Dictionary and checks if the GUI objects "exist" Init = IsContextLoaded(ChildObjects) ' 检查界面层对象是否存在 End Function ' 与界面对象绑定的各类业务操作 ' 测试数据从GlobalDictionary中获取(放在Data层),这里把测试数据做成函数参数可能会更好?! Public Function SetUsername() ChildObjects.Item("AgentName").Set GlobalDictionary.Item("AgentName") End Function Public Function SetPassword() ChildObjects.Item("Password").Set GlobalDictionary.Item("Password") End Function Public Function Submit() ChildObjects.Item("Submit").Click End Function End Class Public Function CreateLogin() Dim objLogin Set objLogin = New Login Set CreateLogin = objLogin End Function |