google搜索 51Testing站内搜索                    软件测试门户 | 软件测试培 训 | 文章资料精选 | 软件测试论坛 | 软件测试博客 | 测试招聘求职 
打印

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

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


我有一个对话框,如附件:


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).”
附件: 您所在的用户组无法下载或查看附件

TOP

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

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

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

TOP

用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抓取那段话的值啊。

TOP

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

TOP

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


TOP

你可以看它的字符串的格式!

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

s = "this is " + l + "label"

TOP

 
当前时区 GMT+8, 现在时间是 2008-10-14 09:36Copyright(C)上海博为峰软件技术有限公司 2001-2007 电话:021-64471599-8017
当您在访问网站、论坛及博客过程中遇到问题时可发送email:webmaster@51testing.com或发送论坛短信至管理员风在吹