关于Static值的验证问题
关于static型的值,应该怎么进行比较呢?这是网上找到的一段实例代码:
Option Explicit
Dim fso
'数据驱动文件路径,数据文件,当前行
Dim ddFilePath, ddFile, ddCurrLine
'执行日志文件路径,日志文件
Dim logFilePath, logFile
Dim strInfo
ddFilePath = Environment.Value("TestDir") & "\ddFile.txt"
logFilePath = Environment.Value("TestDir") & "\logFile.txt"
'====写入测试用例数据到数据驱动文件中===='
Set fso = CreateObject("Scripting.FileSystemObject")
'OpenTextFile第三个参数如果是False表示如果文件一定要存在.
Set ddFile = fso.OpenTextFile(ddFilePath, 2, True)
ddFile.WriteLine "ad,Mercury,Agent name must be at least 4 characters long."
'ddFile.WriteLine "admin,merc,Incorrect password. Please try again"
'ddFile.WriteLine "admin,Mercury,Flight Reservations"
ddFile.Close
'====写入测试结果到数据日志文件中===='
Set logFile = fso.OpenTextFile(logFilePath, 2, True)
logFile.WriteLine "************************************************************"
logFile.WriteLine "************************************************************"
logFile.WriteLine "*************************测试日志***************************"
logFile.WriteLine "******************用例名称:用户登陆**************************"
logFile.WriteLine "**********************作者:Holly zhao*************************"
logFile.WriteLine "********************执行时间:" & Date & "*********************"
logFile.WriteLine "************************测试开始:**************************"
'从ddFile中读取测试数据
Set ddFile = fso.OpenTextFile(ddFilePath, 1, True)
While NOT ddFile.AtEndOfLine
ddCurrLine = Split(ddFile.ReadLine, ",")
'SystemUtil.CloseProcessByName "Flight4a.exe"
SystemUtil.Run Environment.Value("ProductDir") & "\samples\flight\app\flight4b.exe"
Dialog("Login").WinEdit("Agent Name:").Set ddCurrLine(0)
Dialog("Login").WinEdit("Password:").Set ddCurrLine (1)
Dialog("Login").WinButton("OK").Click
If Dialog("Login").Dialog("Flight Reservations").Exist Then
if Dialog("Login").Dialog("Flight Reservations").Static("errInfo").GetROProperty("text") = ddCurrLine(2) Then
‘为什么我找不到Static("errInfo")对象?我查看了所有相关的Static,但是没有找到。这个Static("errInfo")是自定义的吗?
logFile.WriteLine "测试成功!"
MsgBox Dialog("Login").Dialog("Flight Reservations").Static("errInfo").GetROProperty("text")
Else
MsgBox Dialog("Login").Dialog("Flight Reservations").Static("errInfo").GetROProperty("text")
logFile.WriteLine "测试失败!"
End If
Dialog("Login").Dialog("Flight Reservations").WinButton("OK").Click
Dialog("Login").WinButton("Cancel").Click
Else
If Window("Flight Reservation").Exist Then
logFile.WriteLine "测试成功!"
End If
Window("Flight Reservation").Close
End If
Wend
logFile.WriteLine "==========================测试结束==================================="
logFile.WriteLine "*********************************************************************" 是的,对象库里 你没有别人的对象库,只把别人的代码拿过来当然不能直接用。对象的名称是可以改的。估计就是下面这个东西。你在自己对象库里把名称改成一样就可以了。 谢谢你们的回复,但我还是遇到了一点问题,我的解决方法:
1)检查Object库,得到的结果
C:\Object.JPG
2)用Spy查看了一下error 信息的属性,得到
C:\spy.JPG
3)把代码改为
if Dialog("Login").Dialog("Flight Reservations").Static("Agent name must be at least 4 characters long.").GetROProperty("text") = ddCurrLine(2) Then
4)检查结果
1。发现还是有问题,报不能识别。
2。即使能够识别的话,Agent name must be at least 4 characters long.是个动态的信息,能否用errInfo这样的参数来代替,如果能,又该怎么修改object库
(Notes:我试着直接在object库中修改static的信息,同样报错) 这是Object的对象库
这是spy到的结果
把对象库里的对象名称改成errinfo啊,你改代码作甚。8.2版本手头没有。就是改画框的名称,你自己找找吧。 按照你的方法,问题解决了,Thank you very much! 呵呵,有遇到了另外一个问题,就是循环体中的objects的设置问题,操作:
1)在代码中加入测试项,把代码改为
ddFile.WriteLine "ad,Mercury,Agent name must be at least 4 characters long."
ddFile.WriteLine "admin,merc,Incorrect password. Please try again"
ddFile.WriteLine "admin,Mercury,Flight Reservations" ......
While NOT ddFile.AtEndOfLine
.....
If Dialog("Login").Dialog("Flight Reservations").Exist Then
if Dialog("Login").Dialog("Flight Reservations").Static("errInfo").GetROProperty("text") = ddCurrLine(2) Then
.......
Wend
2)在objects中添加第二个错误提示对象
C:\untitled.JPG
3)出现问题
我试着把static的name设置为errInfo,提示errInfo已经存在。但是如果不设置为errInfo,while循环就不能继续执行下去,报对象不能识别
这个问题能通过什么方式解决呢? 在objects中添加第二个错误提示对象
[ 本帖最后由 xyst99 于 2008-2-4 15:58 编辑 ] 你要修改static对象的object identification。缺省好像是nativeclass和window id,你似乎加多两个识别属性,这样每次只要内容不同就变成了不同对象,当然找不到对象了。 太谢谢了,问题解决了,也学到了不少。^_^ 解决了一个难题,谢谢! 请问你的errInfo是变化的吗?是不是取的下面3个值?
ddFile.WriteLine "ad,Mercury,Agent name must be at least 4 characters long."
ddFile.WriteLine "admin,merc,Incorrect password. Please try again"
ddFile.WriteLine "admin,Mercury,Flight Reservations" ......
因为不同的 case,会出现不同的文本,所以不能预设static的值,是不是要把static的这些值放到被读取的excel的对应的case里,然后用FOR循环取staticXXX的提示框的值YYY?
[ 本帖最后由 FLY000 于 2009-2-9 10:00 编辑 ] 搞了半天 终于把这个例子跑通了,不过前提是要对操作进行录制,使得对象库里面有相应的对象。
那么如何不使用对象库,对Static进行描述性编程呢?
页:
[1]