51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4094|回复: 14
打印 上一主题 下一主题

[Robot] 使用robot时一些小技巧(希望有更多的朋友来添加)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2004-11-29 13:54:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
当在robot编译时出现大量的错误,并且通过自己检查确实没有错误,可能是因为在robot程序的编辑框中出现了看不见的字符,将整个程序拷贝到word文档中,可以看见这些字符,在word中将其删除然后拷回到robot中
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏

该用户从未签到

2#
 楼主| 发表于 2004-11-29 14:02:37 | 只看该作者
还有一个刚才掉了。
就是在回放脚本的时候最好不要使用“拼加加”或是“紫光”之类的(暂时我只知道这两个),因为在回放时,如果输入的是“asdf{ENTER}",本意是输入asdf,然后光标焦点跳到下一个输入框,但拼加加会认为{ENTER}是对输入asdf的确认,光标不会后移。如果一定要用拼加加也可以,建议把设置改一下,不要产生这种冲突就好。
不知道我说清楚了没有,在此抛砖引玉,希望大家更多的添加这类小知识,希望更多的朋友少走弯路。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2004-11-30 11:14:32 | 只看该作者
GetField函数的问题:
  GetField函数的使用方法是:GetField[$]( string$ , field_number% , separator_chars$ )表示按seperator_char将string分割,并返回第field_number个数据内容,类似于vb中的split函数。但是如果传递的string为空时,系统就报错,并且robot也会非法退出。

解决方法:
  这是一个已经确认SQABasic的bug,要绕过这个bug,一个是自己写一个函数封装GetField(),另一个是利用别人写好的具有相同功能的函数。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2004-11-30 14:59:06 | 只看该作者

JAVA的TREEVIEW不能正确回放的问题

JAVA的TREEVIEW不能正确回放的问题,
有时因为没有安装JAVASDK造成对象不能正确识别,所以不能正确回放.
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2004-12-2 14:06:21 | 只看该作者

SQAGetProperty(".\","Recognition",value)的应用

SQAGetProperty(".\","Recognition",value)
用于当前窗口信息的一个函数,
".\"当前窗口,
"Recognition"我也不知道什么意思,不需要自己定义
value我要用的就是这个值,str(value)返回的是当前窗口的类型和标题
下面是我的一个应用举例:
‘代码省略
msgbox “已弹出窗口!”
Result=SQAGetProperty(".\","Recognition",value)
If str(value)="Type=Window;Caption=MyWindow"  Then
  msgbox "sqaPass"
Else
msgbox "sqaFail"
End If
当然可以做其他的处理
说明:"Type=Window;Caption=MyWindow"是我们预期应该出现的窗口的类型和标题,可以用SQAGetProperty(".\","Recognition",value)事先得到
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2004-12-2 14:25:35 | 只看该作者
原来还可以这样的,我一直是通过sqafindobject这个函数来判断当前弹出窗口是否为我需要的窗口。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2004-12-3 11:07:05 | 只看该作者

SQAGetProperty(".\","Recognition",value)的应用(更正)

对我上次发的帖子,我真的是很遗憾,因为出了点错误,在此我给出了解决的方法,希望大家原谅!
下面是出了问题的例子:
sub main
   Dim Result as integer
   dim value   as string   
    Window SetContext, "Caption=仓库管理系统 - [收货一览表]", ""   
    Window SetContext, "Caption=收货一览表;ChildWindow", ""
    InputKeys "{F4}"
    '按F4后弹出查询框,即下面的窗口
    Window SetContext, "Caption=查询框", ""
    Result=SQAGetProperty("CurrentWindow","Recognition",value)
    msgbox str(value)
  end sub
得到的结果是:"Type=Window;Caption=查询框" ,和预期的结果一样正确
下面将 Window SetContext, "Caption=查询框", "" 屏蔽掉,不运行这行语句
预期的结果是:和上次的一样,因为按了F4后查询框还是会出来,
但很遗憾,结果是:"Type=Window;Caption=收货一览表",
是查询框的父窗口,问题就出来了,即没有真实的反映当前的窗口。

到现在我还不知道是为什么!
“.\”的英文原文是:A dot-backslash ( .\ ) represents the current context window.
可能是因为我英语太差了,理解上出了偏差,哪位知道的朋友能否告诉我一下?!

下面是解决的办法:
把参数 ".\" 改为 "CurrentWindow",
即 Result=SQAGetProperty("CurrentWindow","Recognition",value)
我试了几次了,没有上述的问题,可以正确的反映当前窗口。
以后不敢马虎了,再次向各位朋友深表歉意!!

另外,我楼上的那位朋友能不能告诉我sqafindobject这个函数怎么用啊?谢谢!
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2004-12-3 16:45:42 | 只看该作者
Window ResetTestContext,"",""
    If SQAFindobject("Caption=hello")= 0 then
        Window SetContext, "Caption=hello", ""
        PushButton Click, "Text=No"
    End If   
其中必须先调用Window ResetTestContext,"",""
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2004-12-3 19:55:26 | 只看该作者
通过查看帮助,可知
   .\解释是A dot-backslash ( .\ ) represents the current context window.
   CurrentWindow 的解释是 is a recMethod value that specifies the currently active window as the window object to access or to set as the current context window.

可见这两者是有区别的.
   Context notation is recMethod argument syntax that defines hierarchical relationships between objects. 说明这是用来区分控件的层次结构的。比如对于网页有框架结构的话,可以通过.\等符号确定该控件是属于哪一个层次。
   而CurrentWindow是用来区分当前的活动窗口的。对于弹出的窗口,它是活动窗口,所以用该语句可以使焦点确定在该窗口上的。

   对于弹出的窗口,如果没有使用Window SetContext将焦点定在当前的活动窗口上,则用SQAGetProperty(".\","Recognition",value)抓出来的还是在之前层次架构下的。而用SQAGetProperty("CurrentWindow","Recognition",value)则是抓取当前活动窗口的属性。

关于Recognition
一共分为Recognition, ParentRecognition, FullRecognition
1. To find the recognition method of the currently active window:
Result=SQAGetProperty(".\","Recognition",value)
Returned value:
Type=Window;Name=frmMain
抓出来的是当前窗口的一些信息

2. To find the immediate parent of the tree view item Bach:
Result=SQAGetProperty("Name=treMain;\;ItemText=Bach","ParentRecognition",value)
Returned value:
Type=TreeView;Name=treMain
抓出来的是树型结构的父结点的信息

3. To find the complete object path of the tree view item Bach, beginning with the desktop and ending with the target object itself:
Result=SQAGetProperty("Name=treMain;\;ItemText=Bach","FullRecognition",value)
Returned value:
Type=Window;Name=frmMain;\;Type=TreeView;Name=treMain;\;Type=TVItem;ItemText=Bach
抓出来的是树型结构中指向该控件的全部路径

由此可见从这些抓出来的信息中,并不能完全确定该项是否是自己所需要的。比如判断弹出的窗口,一些正确的信息和一些警告信息,说不定都是同一个Caption。所以用Recognition并不能很好的判断。因此可以用SQAGetProperty抓取对话框里的语句来确定该窗口是否是自己所需要的。
具体的方法可见在51testing的杂志第二期上我的一篇《关于SQAGetProperty的使用》。

欢迎讨论
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2004-12-6 13:40:59 | 只看该作者
谢谢两位!
  受用
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2004-12-8 16:41:24 | 只看该作者
谢谢各位师兄!
回复 支持 反对

使用道具 举报

该用户从未签到

12#
 楼主| 发表于 2004-12-14 13:46:41 | 只看该作者
使用通配符*,确定某一类的表示。
  例:window setcontext,"caption={NO:*}"

可以表示标题为:NO:123
                        NO:79989 等等
书上的原例子。
回复 支持 反对

使用道具 举报

该用户从未签到

13#
发表于 2004-12-14 15:09:37 | 只看该作者
除了*还有?
呵呵
回复 支持 反对

使用道具 举报

该用户从未签到

14#
发表于 2004-12-20 14:32:14 | 只看该作者
还有 ?  这个只能通配一个字符
回复 支持 反对

使用道具 举报

该用户从未签到

15#
发表于 2004-12-20 16:00:25 | 只看该作者
讨论vu录制的好像不多啊。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-28 07:14 , Processed in 0.079788 second(s), 29 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表