51Testing软件测试论坛

标题: Description.Create( )?? [打印本页]

作者: lihongxin    时间: 2007-7-7 12:04
标题: Description.Create( )??
假设我们需要完成以下操作:
Window(“计算器”).WinButton("text:=1").Click
Window(“计算器”).WinButton("text:=2").Click
Window(“计算器”).WinButton("text:=+").Click
通过Description对象来来实现上述功能如下:
Set MyDescription = Description.Create()
Set Calc= Description.Create()

Calc("regexpwndtitle")=”计算器”
Calc("regexpwndclass")= "SciCalc"
MyDescription("nativeclass").value="Button"

MyDescription("text").Value = "1"
Window(Calc).WinButton(MyDescription).Click

MyDescription("text").Value = "+"
Window(Calc).WinButton(MyDescription).Click

MyDescription("text").Value = "2"
Window(Calc).WinButton(MyDescription).Click


Set MyDescription = Nothing
Set Calc= Nothing
但上述代码老是调试不通过,提示问题为:Cannot identify the object "WinButton" (of class WinButton). Verify that this object's properties match an object currently displayed in your application.
知道的请解答一下,谢谢!
作者: 风过无息    时间: 2007-7-7 13:38
Calc("regexpwndtitle")=”计算器”
Calc("regexpwndclass")= "SciCalc"
应该是
Calc("regexpwndtitle").value="=”计算器”
Calc("regexpwndclass").value="= "SciCalc"
作者: winfood    时间: 2007-7-7 13:51
除了2楼指出的错误以外,发现一个奇怪的地方。这段脚本并不是在Click每个计算器按钮都出现LZ遇到的错误提示Cannot identify the object "WinButton",只有加号按钮才出现错误。

  1. ...
  2. MyDescription("text").Value = "+"
  3. Window(Calc).WinButton(MyDescription).Click
  4. ...
复制代码


如果换成如下脚本,就可以顺利通过。

  1. SystemUtil.Run "calc.exe"
  2. Set Calc = Description.Create()
  3. Calc("regexpwndtitle").value = "计算器"
  4. Calc("regexpwndclass").value = "SciCalc"

  5. Set MyDescription = Description.Create()
  6. MyDescription("nativeclass").value = "Button"
  7. MyDescription("text").value = "1"
  8. Window(Calc).WinButton(MyDescription).Click

  9. MyDescription("text").value = "-"
  10. Window(Calc).WinButton(MyDescription).Click

  11. MyDescription("text").Value = "2"
  12. Window(Calc).WinButton(MyDescription).Click

  13. MyDescription("text").Value = "="
  14. Window(Calc).WinButton(MyDescription).Click

  15. Set MyDescription = Nothing
  16. Set Calc = Nothing
复制代码


计算器的其他按钮包括数字、减乘除号和等号都可以描述识别,但是就是加号按钮不知道为何总是识别出错。如果用QTP捕捉加号按钮并保存到对象仓库,在对象仓库中看到的加号按钮识别信息也仅限于nativeclass = Button和text = +这两个识别条件。目前还没有找到原因。

[ 本帖最后由 winfood 于 2007-7-7 13:59 编辑 ]
作者: sidneylover    时间: 2007-7-7 13:56
+号是字符串连接符,需要用转义符转一下
作者: winfood    时间: 2007-7-7 14:09
原帖由 sidneylover 于 2007-7-7 13:56 发表
+号是字符串连接符,需要用转义符转一下


转义方式我早已经试过了,用MyDescription("text").value = Chr(43)也是不行的。
因为VBScript的机制是解释执行的,所以
MyDescription("text").value = Chr(43)

MyDescription("text").value = "+"
这两句在QTP运行脚本时是没有区别的,我怀疑这是某个Bug。

不知道我理解的对不对,楼上的能给个代码吗?
作者: 风过无息    时间: 2007-7-7 14:47
用\+代替+.这个在以前的帖子上有的.
作者: sidneylover    时间: 2007-7-7 15:06
搞不懂了
Set mydes = description.Create()
mydes("text").value = "+"
Set obj = window("计算器").ChildObjects(mydes)
msgbox obj.count
window("计算器").WinButton(mydes).click

这样MSGBOX出来的是0
mydes("text").value = "+"改成mydes("text").value = "\+"之后,MSGBOX的值是1,说明能找到对象,但执行window("计算器").WinButton(mydes).click的时候又提示没有对象
换成mydes("text").value = "\+"之后 ,能通过msgbox obj(0).GetROProperty("text")捕获到其text属性是+
作者: sidneylover    时间: 2007-7-7 15:07
原帖由 风过无息 于 2007-7-7 14:47 发表
用\+代替+.这个在以前的帖子上有的.


window("计算器").WinButton("text:=\+").Click
直接这样是可以的,但通过description方法就不行了
作者: lihongxin    时间: 2007-7-7 19:39
谢谢了。不过,我现在测试的计算器的Button的"text"属性是空值,好像是不能由“text”属性来确定Button,需要由“Window id”来确定,问怎么写代码?
作者: lihongxin    时间: 2007-7-7 19:45
再补充一下:谢谢楼上哥哥,姐姐。我用是QTP 8.2版!
作者: skyzhu    时间: 2007-7-9 11:14
标题: 试了下这样可以
MyDescription("text").value = "\+"




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2