51Testing软件测试论坛

标题: 请教怎样从对话框的字符串中取出自己需要的来验证 [打印本页]

作者: 司空公子    时间: 2004-8-24 16:05
标题: 请教怎样从对话框的字符串中取出自己需要的来验证
我有一个对话框,如附件:


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

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

如果不可以那么最坏的方式也可以用image的对比方式,好像robot提供了百分比方式对比,也就是说有百分之多少像素类似就可以认为是完全相同。
也是一种验证方式
作者: 司空公子    时间: 2004-8-25 10:59
用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抓取那段话的值啊。
作者: pcl2004_27    时间: 2004-8-30 10:40
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
作者: blinkday    时间: 2004-9-4 09:46
标题: 可他所说lable的值是不固定的,可以取出来吗?

作者: pcl2004_27    时间: 2004-9-4 10:40
你可以看它的字符串的格式!

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

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




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