51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4137|回复: 5
打印 上一主题 下一主题

[Robot] 请教怎样从对话框的字符串中取出自己需要的来验证

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2004-8-24 16:05:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我有一个对话框,如附件:


P21下有两个子项P22和P23。如果P22和P23没有release,则会跳出这个警告。但我循环运行时,P的值都会变,比如P1(P2,P3)。而有的情况P下没有子项,比如P2下没有子项。那么就不会跳出该警告,直接进入该对话框后的另一个询问的对话框,那个对话框是点击OK的。因此我想判别首先碰到的是否是第一个对话框,点击OK,然后在进入第二个对话框。
可是由于每次运行时,P的值都会变。我取验证点时不能以整个Text为对象,否则就会认不出来。
请问是否可以只取开头的一句话,以此验证是否是第一个对话框?

我现在的做法是用Region Image抓取开头的图像来比较,如果比较下来是第一个对话框,就点OK,然后进入第二个对话框。如果比较下来不是第一个对话框,就直接进入第二个对话框。代码如下:

  Result = RegionVP (CompareImage, "", "VP=Region Image;Wait=2,6;Coords=255,360,678,376")

   
    if Result=1 then

'    Ignore the part has BOM.   
    Window SetContext, "Caption=Microsoft Internet Explorer", ""
    PushButton Click, "Text=OK"
  
    end if
   
'    Ignore the warning info about missing required value.
    Window SetContext, "Caption=Microsoft Internet Explorer", ""
    PushButton Click, "Text=OK"
   
但这种做法又有个缺点。如果P1的子项只有P2,那么这个警告对话框就变成P1(P2)。虽然开头的句子都是一样的,但由于句子长度变化了,开头的Region Image也不再匹配。因此,robot就误认为该对话框不是第一个,而是第二个,因此点击了OK。但是随即的第二个对话框确无法点击OK,因此出错。

因此最好的办法还是验证开头的一句话,比如:“Unreleased Component(s).”

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏

该用户从未签到

2#
发表于 2004-8-24 22:07:07 | 只看该作者
我觉得应该可以的
你看看能否得到整个text属性,因为整个提示语句是定义的,如果出现错误变化就是在画红圈的地方
把整段提示提取出来,然后用字符串处理函数进行处理,每次对比就变化的部分就可以了。

操作方法用object property来抓取这段话,如果成功,在脚本中用sqagetproperty来操作就可以了,接下来就是处理这段话的。

如果不可以那么最坏的方式也可以用image的对比方式,好像robot提供了百分比方式对比,也就是说有百分之多少像素类似就可以认为是完全相同。
也是一种验证方式
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2004-8-25 10:59:49 | 只看该作者
用object property来抓取,可以得到Text=Unreleased Component(s). The following affected items have unreleased components:  P60(P61,P62). Would you like to release anyway?
我怎样使用SQAGetProperty来操作?
是先用object property抓取后,再用SQAGetProperty在得到的Text中取出开头的一段话?还是直接用SQAGetProperty抓取?
SQAGetProperty如何操作啊?不好意思,帮助没怎么看懂。
语法结构是status% = SQAGetProperty(recMethod$, property$, value)
recMethod$是区分识别对象的值。property$是对象的名字。value是返回值。
Example里用的是Result = SQAGetProperty("Type=CheckBox;Text=Match case", "State", CheckState)
这个"State"是什么意思啊?
我仿造它的例子写成
    Window SetTestContext, "Caption=Microsoft Internet Explorer", ""
    Result = SQAGetProperty("Type=Label;Text=Unreleased Component(s).", "Label", value)
    if value = 1 then
    PushButton Click, "Text=OK"
    end if
但是没有用,value=0,根本就不执行点OK的语句。
请问到底怎样使用SQAGetProperty抓取那段话的值啊。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2004-8-30 10:40:15 | 只看该作者
1.打开word中的脚本编辑器,编写代码
sub demo()
   msgbox "hello world"
end sub
2.运行
3.用robot中object property,抓属性,得到text属性为 hello world
4.robot中编写脚本
Sub Main
    Dim Result As Integer
    Dim value as String
    'Initially Recorded: 2004-8-30  10:29:22
    'Script Name: TestMsg
   
    Window SetContext, "Caption=Microsoft Word", ""
    Result = SQAGetProperty("Type=Label;Text=hello world", "Text", value)
    msgBox value
End Sub
5.解释
  这里 text是label的显示的text
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2004-9-4 09:46:48 | 只看该作者

可他所说lable的值是不固定的,可以取出来吗?

回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2004-9-4 10:40:50 | 只看该作者
你可以看它的字符串的格式!

相当这样
dim s as string
dim l as string
l ='1'

s = "this is " + l + "label"
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-14 13:13 , Processed in 0.075818 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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