xyst99 发表于 2008-2-3 15:54:30

关于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 "*********************************************************************"

danmy 发表于 2008-2-3 16:53:24

是的,对象库里

gy21st 发表于 2008-2-3 16:53:52

你没有别人的对象库,只把别人的代码拿过来当然不能直接用。对象的名称是可以改的。估计就是下面这个东西。你在自己对象库里把名称改成一样就可以了。

xyst99 发表于 2008-2-3 18:31:53

谢谢你们的回复,但我还是遇到了一点问题,我的解决方法:
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的信息,同样报错)

xyst99 发表于 2008-2-3 18:34:27

这是Object的对象库

这是spy到的结果

gy21st 发表于 2008-2-3 20:43:21

把对象库里的对象名称改成errinfo啊,你改代码作甚。8.2版本手头没有。就是改画框的名称,你自己找找吧。

xyst99 发表于 2008-2-4 12:45:55

按照你的方法,问题解决了,Thank you very much!

xyst99 发表于 2008-2-4 15:54:35

呵呵,有遇到了另外一个问题,就是循环体中的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循环就不能继续执行下去,报对象不能识别

   这个问题能通过什么方式解决呢?

xyst99 发表于 2008-2-4 15:55:55

在objects中添加第二个错误提示对象

[ 本帖最后由 xyst99 于 2008-2-4 15:58 编辑 ]

gy21st 发表于 2008-2-4 17:28:58

你要修改static对象的object identification。缺省好像是nativeclass和window id,你似乎加多两个识别属性,这样每次只要内容不同就变成了不同对象,当然找不到对象了。

xyst99 发表于 2008-2-4 19:06:33

太谢谢了,问题解决了,也学到了不少。^_^

Mix 发表于 2008-3-11 16:31:05

解决了一个难题,谢谢!

FLY000 发表于 2009-2-9 09:56:44

请问你的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 编辑 ]

nemo_yu 发表于 2009-3-13 15:01:43

搞了半天 终于把这个例子跑通了,不过前提是要对操作进行录制,使得对象库里面有相应的对象。
那么如何不使用对象库,对Static进行描述性编程呢?
页: [1]
查看完整版本: 关于Static值的验证问题