Call w.Keys("MyString [Enter]");
...
下一步就是获取命令行应用程序的响应了,在TestComplete中可以通过wText来获取,下面代码展示了一个完整的小例子:
Sub MyTest
Dim p, w, txt, cnt, i, s
Set p = Sys.Process("MyApp")
Set w = p.Window("ConsoleWindowClass", "*")
Call w.Keys("MyString [Enter]")
' 获取命令行窗口的文本
txt = w.wText
' 指定分割符
aqString.ListSeparator = vbNewLine
' 获取文本列表的长度
cnt = aqString.GetListLength(txt)
For i = 0 To cnt - 1
' 获取一行文本的字符串
s = aqString.GetListItem(txt, i)
' 把字符串写入日志
Call Log.Message(s)
Next
End Sub
这种方式获取的是所有文本,如果想以一种交互式的方式来测试命令行应用程序的话,还可以利用WScript.Shell,例如下面的代码所示:
Sub Main
Dim WshShellObj, WshShellExecObj, out
Set WshShellObj = CreateObject("WScript.Shell")
Set WshShellExecObj = WshShellObj.Exec("cmd.exe")
' Flush the stream
out = readTillChar(WshShellExecObj, ">")
Log.Message(out)
' Send the "ver" command and the new line character
WshShellExecObj.StdIn.Write("ver"+VbCrLf)
out = readTillChar(WshShellExecObj, ">")
Log.Message(out)
End Sub
Function readTillChar(WshShellExecObj, endChar)
Dim out, curChar
Do While Not WshShellExecObj.StdOut.AtEndOfStream
curChar = WshShellExecObj.StdOut.Read(1)
out = out + curChar
If (curChar = endChar) Then
readTillChar = out
Exit Function
End If
Loop
End Function
GUI Explorer
除了上面一些主要的改进和新特性外,TestComplete 7 还在很多细节的地方做了改进和提高,在Object Browser中,添加了一个GUI Explorer小工具,GUI Explorer可以帮助我们查看应用程序GUI界面控件的层次结构,例如,下图展现的是Google主页的GUI界面控件的层次结构:
GUI Explorer可以让我们观察界面上的对象,不管它是可见的还是隐藏的。在GUI Explorer中,窗体控件被画成亮灰色,非窗口控件则画成暗灰色,不可见的控件都是白色的,对于隐藏的控件,则画出其边界。
新加入了Table变量类型
TestComplete7引入了一个新类型的变量 – Table,其实就是一个二维数组。
Table可以在Project、Project Suites和Keyword test中使用。例如,下面的代码展示了如何访问Table中的数据:
Sub getTableData
columnCount = Project.Variables.Var1.ColumnCount
rowCount = Project.Variables.Var1.RowCount
For I=0 to rowCount-1
For J=0 to columnCount-1
Log.Message(Project.Variables.Var1.Item(J,I))
Next
Next
End Sub
小结
TestComplete 7 的亮相给我们带来不少惊喜,例如对关键字测试的支持(虽然还有待改进,但是毕竟迈出了第一步)、对PDA、RIA应用的支持等。
此外,TestComplete一如既往地保持对新技术、工具、编译器的及时支持,例如:IE8被及时地支持了,CodeGear RAD Studio 2009也被及时地支持了。在TestComplete 7 中,除了Microsoft 的Visual Studio Team System 和 AutomatedQA自己的 AQdevTeam外,现在还支持把bug录到开源的Bugzilla(看来金融危机下,开源的东西开始被重视起来了)。