51Testing软件测试论坛

标题: Robot 对于delphi的控件的识别? [打印本页]

作者: guirongb    时间: 2004-12-6 10:39
标题: Robot 对于delphi的控件的识别?
Robot对于Delphi的自定义控件,如:图中显示的类似于DataGrid的控件只能识别到

    GenericObject Click, "Class=TwwDBGrid;ClassIndex=2", "Coords=202,58"

我想要得到各详细的控件属性,有什么好办法么?
比如,每一行的文本属性.
但是,我只能得到这些属性:

"Width","967.00000"
"Height","121.00000"
"Focus","True"
"Visible","True"
"Enabled","True"
"Left","28.00000"
"Top","83.00000"
"Text",""

是不是它是作为一整个控件的??不能一行行的识别文本的???这样我就死心了.

另外, 怎么样才能算是启动了Delphi Enabler?  是不是在 Tools->Extension Manager ->Delphi 上面打勾就行了???

不明白阿:,(,请高手指点明路.
作者: guirongb    时间: 2004-12-6 10:41
另外,关于第三方控件的识别问题,我看过了
http://bbs.51testing.com/viewthread.php?tid=1468&fpage=1
这篇帖子了,很模糊,基本上没得到什么帮助,请求高人更详细的解释...
作者: guirongb    时间: 2004-12-6 11:45
没人回答????继续郁闷
作者: pcl2004_27    时间: 2004-12-6 16:55
识别控件,需要相应的enabler,你现在测试的程序是delphi开发的应用软件,那么就要加载相应的delphi enabler!

extension manager里边加入了delphi enabler,但是这个还是不能识别出delphi开发中用到的第三方控件或则其他控件!其实这里选择只是个打开使用真正的delphi enabler的开关,真正的delphi其实是一个sqasrvr.pas的单元文件,这个单元文件是识别控件的核心。

ratitonal 2003里边的test enabler安装选项中包含delphi enabler,但是它需要你本机上安装delphi,才会把delphi enabler安装到你的机器上。否则不会出现。

假如安装成功后,会在开始菜单中rational菜单下,rational test菜单下出现个delphi enabler(具体什么名字忘记了)的菜单项,通过它可以调用一个执行文件。
执行文件的功能就是把sqasrvr.pas自动放到工程文件的头。

delphi 工程文件只有加载了这个delphi enabler(核心 sqasrvr.pas)才会让robot识别,当然前提是你的extension manager中delphi选择了。
作者: guirongb    时间: 2004-12-7 08:55
pcl2004_27斑竹真是太感谢你了,不过,我还有一些疑问
我已经在没有Delphi的环境下安装好了Rational系统,那么现在要安装Delphi enabler是不是需要卸载Rational,安装Delphi,然后再安装rational呢?或者我现在安装Delphi,然后安装Rational Test Enabler就行了?(工程浩大阿,我懒)


再次拜谢功力深厚,大侠风范的pcl2004_27斑竹!谢谢
作者: guirongb    时间: 2004-12-7 11:48
偶在偶可怜的机器上安装了Delphi7 ,然后再次安装 Rational Test Enabler,但是没有出现Delphi Enabler的选项,仔细看了 Test Enabler的 介绍....

A freely distributable add-on to Rational Robot that installs the components you need to enable ObjectTesting on a developer or tester system. It enables testing of ActiveX, Java, and Visual Basic 4 without installing the full Rational Robot product.

好像没有Delphi....

是不是要卸载了 Rational的整个产品才行???
搞大了,搞大了
作者: sesamehch    时间: 2004-12-7 12:02
不用卸载Rational就可以
Delphi7好像不支持,要Delphi5
作者: pcl2004_27    时间: 2004-12-7 12:05
其实我上边已经说得很清楚了,核心文件是sqasrvr.pas。
你只要有他就可以了,直接在delphi中用
我已经把这个enabler重新编译了,可以支持到delphi7

因为robot delphi enabler支持到delphi6,所以rational 会在安装的时候检查是否安装了delphi6以下的版本包括6,如果是delphi6以上的版本同样不会出现这个安装选项
作者: pcl2004_27    时间: 2004-12-7 12:07
to guirongb:
其实不用那么麻烦,一般情况下都是现安装delphi后,安装rational,但是你如果有哪个sqasrvr.pas,就可以直接使用,不用再安装rational test enabler
作者: guirongb    时间: 2004-12-7 13:15
pcl2004_27大虾:
这个文件大不大阿?能不能把这个文件发给我阿?
还有它是不是像头文件一样调用的阿?
就像 '$include "Common.sbh" ??

还有我在
Rational® Testing Products
Release Notes
Release 2003.06.00
看到
Rational Robot: General and Functional Testing
New and Changed Features

Delphi 6 Support
Rational Robot now supports Delphi 6, which includes enhancements to object recognition. (Users of any currently supported version of Delphi should carefully review the Guidelines and Restrictions section of this document.)

是不是Rational 2003 已经支持Delphi6 了?
作者: guirongb    时间: 2004-12-7 13:51
我的Mail是
guirongb@163.com
guirongb@hotmail.com
作者: alfra    时间: 2004-12-7 19:20
标题: ?
我也在不明白中。。。sqasrvr.pas,在delphi安装文件里面吗??
作者: sesamehch    时间: 2004-12-8 08:42
安装Rational Test Enablers的Rational Test Delphi Enabler选项后,就会在Delphi下面多了一个Rational Test Delphi Project Converter工具,并且在Delphi系统根目录下的lib文件夹里生成多一个sqasrvr.pas文件。

你使用那个转换工具的话,它会在你指定的工程里面添加对sqasrvr.pas的引用,从而帮助Robot识别Delphi控件。

如果你有别人的sqasrvr.pas文件的话,把它直接添加到你的工程里直接使用也可以。
作者: guirongb    时间: 2004-12-8 08:55
;o .听了楼上的大虾解释,我更加糊涂了,到底是先安装Enabler 还是 Delphi? 呵呵,先有鸡,还是先有蛋?
作者: guirongb    时间: 2004-12-8 13:35
标题: 顶一下,等待sqasrvr.pas中。。。。。哪位大虾发一个?

作者: sesamehch    时间: 2004-12-8 14:21
当然是先安装Delphi了。
作者: z517testing    时间: 2004-12-8 15:02
1.先安装了delphi5
2.再安装Rational
3.以上安装成功之后在程序----delphi5中有delphi enabler这项,接下来怎样配置!谢谢!
作者: guirongb    时间: 2004-12-9 10:13
pcl2004_27大虾:
能不能大发慈悲发个sqasrvr.pas 给我阿?
MailTo:
guirongb@163.com
作者: ee鱼    时间: 2004-12-13 08:55
我现在也有同样的问题,我们的产品是Delphi6的,前两天试了试用Robot,识别的不好啊!!!
ezhangyiling@163.com
作者: pcl2004_27    时间: 2004-12-13 10:25
我已经发送,请guirongb, ee鱼两位朋友接收!
作者: wookt    时间: 2004-12-13 15:02
标题: 版主,给我发一个把,我急需wookt@163.com

作者: guirongb    时间: 2004-12-14 10:35
pcl2004_27大虾:
晕,偶没有收到啊.再麻烦发一下??
guirongb@163.com
guirongb@hotmail.com
作者: ee鱼    时间: 2004-12-15 14:32
我也没收到阿:,(
作者: pcl2004_27    时间: 2004-12-15 15:53
标题: Delphi Enabler
我这里的发邮件有问题,放到这里你们直接下
作者: z517testing    时间: 2004-12-15 16:59
1.先安装了delphi5
2.再安装Rational
3.以上安装成功之后在程序----delphi5中有delphi enabler这项,接下来怎样配置!谢谢!
4.接下来叫开发人员打开被测试程序的源码,在主窗体是引用sqasrvr.pas这个单元,之后重新编译。
5.开始菜单中rational菜单下,rational test菜单下出现个Rational Test Delphi Project Converter的菜单项,通过它可以调用一个执行文件。

一切就OK!请指教!
作者: z517testing    时间: 2004-12-15 17:02
注意:只把sqasrvr.pas 文发给开发员是不行的!最好是安装Rational Test Enablers这个包,这样开发人员引用是就不会出错!

[ Last edited by z517testing on 2004-12-15 at 17:04 ]
作者: z517testing    时间: 2004-12-15 17:06
Originally posted by z517testing at 2004-12-15 05:02 PM:
注意:只把sqasrvr.pas 文发给开发员是不行的!最好是安装Rational Test Enablers这个包,这样开发人员引用是就不会出错!

[ Last edited by z517testing on 2004-12-15 at 17:04 ]

作者: pcl2004_27    时间: 2004-12-15 20:00
谢谢楼上的建议
但是我想知道你的第五步
5.开始菜单中rational菜单下,rational test菜单下出现个Rational Test Delphi Project Converter的菜单项,通过它可以调用一个执行文件
这里调用的一个执行文件说的是什么?
作者: sesamehch    时间: 2004-12-16 09:28
标题: To:z517testing
你说:4.接下来叫开发人员打开被测试程序的源码,在主窗体是引用sqasrvr.pas这个单元,之后重新编译。

请问在主窗体引用sqasrvr.pas单元有什么用?应该在工程项目中加入这个单元就行了!

你说:5.开始菜单中rational菜单下,rational test菜单下出现个Rational Test Delphi Project Converter的菜单项,通过它可以调用一个执行文件。

在rational test菜单下会出现个Rational Test Delphi Project Converter的菜单项吗?是在Delphi菜单下才会出现吧!而且这个Converter的功能也就是将sqasrvr.pas单元加入到工程项目中

你说:注意:只把sqasrvr.pas 文发给开发员是不行的!最好是安装Rational Test Enablers这个包,这样开发人员引用是就不会出错!

我既是测试人员又是开发人员,我还对sqasrvr.pas 进行了扩展。但我用sqasrvr.pas 这么久了一点问题都没有啊,我想知道你指的出错是会出现什么错?


我在上面的帖子中已经说过了:
安装Rational Test Enablers的Rational Test Delphi Enabler选项后,就会在Delphi下面多了一个Rational Test Delphi Project Converter工具,并且在Delphi系统根目录下的lib文件夹里生成多一个sqasrvr.pas文件。

你使用那个转换工具的话,它会在你指定的工程里面添加对sqasrvr.pas的引用,从而帮助Robot识别Delphi控件。

如果你有别人的sqasrvr.pas文件的话,把它直接添加到你的工程里直接使用也可以。

我觉得我上面已经说得很清楚了吧!
作者: z517testing    时间: 2004-12-16 09:31
谢谢,指教。
  
第五步:实现的功能与第四步的功能是一样。只是引用sqasrvr.pas单元的方法不同。
          (我们也可以通过第五步点击《Convert》打开源程序再加入sqasrvr.pas)

所以正确的方法如下:
1.先安装了delphi5
2.再安装Rational
3.以上安装成功之后在程序----delphi5中有Rational Test Delphi Project Converter这项,接下来怎样配置!
4.接下来叫开发人员打开被测试程序的源码,在主窗体是引用sqasrvr.pas这个单元,之后重新编译。或从开始菜单中Delphi5菜单下的Rational Test Delphi Project Converter的菜单项进入引用sqasrvr.pas。

[ Last edited by z517testing on 2004-12-16 at 09:32 ]
作者: z517testing    时间: 2004-12-16 09:39
To:sesamehch

注意:只把sqasrvr.pas 文发给开发员是不行的!最好是安装Rational Test Enablers这个包,这样开发人员引用是就不会出错!如果只把sqasrvr.pas 文发给开发人员,那么开发人员在引用时会找不到sqasrvr.dcu文件,所以最好安装Rational Test Enablers这个包。

sesamehch讲得很对,谢谢指导。;)

[ Last edited by z517testing on 2004-12-16 at 09:46 ]
作者: sesamehch    时间: 2004-12-16 09:46
指导不敢当,共同探讨还是可以的。

你说“在主窗体是引用sqasrvr.pas这个单元”是很容易误导别人的,在窗体里是没有必要引用sqasrvr.pas单元的,只要把这个单元添加到工程里就行了。
作者: guirongb    时间: 2004-12-16 09:47
太好啦,太好拉,终于画上圆满的句号,感谢PCL等老大的热心帮助。
作者: z517testing    时间: 2004-12-16 09:48
没错,用词不当!
作者: sesamehch    时间: 2004-12-16 09:55
To:sesamehch

注意:只把sqasrvr.pas 文发给开发员是不行的!最好是安装Rational Test Enablers这个包,这样开发人员引用是就不会出错!如果只把sqasrvr.pas 文发给开发人员,那么开发人员在引用时会找不到sqasrvr.dcu文件,所以最好安装Rational Test Enablers这个包。


sqasrvr.pas 都有了还找什么sqasrvr.dcu,在添加了sqasrvr.pas 单元再编译后就会生成sqasrvr.dcu了。
作者: ee鱼    时间: 2004-12-16 10:22
各位高人,你们讲了这么多,受教了。可是...............

我装了Delphi6,Rational Test Enablers这个包也装了,之后内?怎么用阿?
1、怎样在指定的工程里面添加对sqasrvr.pas的引用?请指教一下怎么操作可以么?还是安了Rational Test Enablers后就不用管了,robot会自动引用?
2、让开发人员引用后再编译是不可能的,我们产品是业务建模平台,只能在robot里面做手脚了。
作者: sesamehch    时间: 2004-12-16 10:34
标题: To:ee鱼
让开发人员引用后再编译是不可能的

那样的话就没有了,用不了sqasrvr.pas了,用这个一定要开发人员引用后再编译的
作者: sharpwood    时间: 2004-12-21 11:16
我用Delphi 7编译sqasrvr.pas这个文件,不能通过,提示 ole2.cue没有找到。
用Delphi 2005 编译更惨,好多错误,难道只能用6以下的版本吗?
作者: sesamehch    时间: 2004-12-21 12:59
Delphi系统目录下的Lib文件夹下的Delphi2文件夹下有ole2.dcu这个文件,你引用就行了。
作者: sharpwood    时间: 2004-12-21 14:47
我引用了还是不行,提示一堆错误,

[Warning] sqasrvr.pas(104): W1006 Unit 'OleAuto' is deprecated
[Warning] sqasrvr.pas(157): W1000 Symbol 'AUTOMATED' is deprecated
[Warning] sqasrvr.pas(183): W1000 Symbol 'AUTOMATED' is deprecated
[Warning] sqasrvr.pas(196): W1000 Symbol 'AUTOMATED' is deprecated
[Warning] sqasrvr.pas(207): W1000 Symbol 'AUTOMATED' is deprecated
[Warning] sqasrvr.pas(223): W1000 Symbol 'AUTOMATED' is deprecated
[Warning] sqasrvr.pas(236): W1000 Symbol 'AUTOMATED' is deprecated
[Warning] sqasrvr.pas(248): W1000 Symbol 'AUTOMATED' is deprecated
[Warning] sqasrvr.pas(257): W1000 Symbol 'AUTOMATED' is deprecated
[Warning] sqasrvr.pas(266): W1000 Symbol 'AUTOMATED' is deprecated
[Warning] sqasrvr.pas(272): W1000 Symbol 'AUTOMATED' is deprecated
[Error] sqasrvr.pas(569): E2003 Undeclared identifier: 'VarArrayCreate'
[Error] sqasrvr.pas(605): E2003 Undeclared identifier: 'VarAsType'
[Error] sqasrvr.pas(610): E2003 Undeclared identifier: 'VarToStr'
[Error] sqasrvr.pas(610): E2250 There is no overloaded version of 'SetStrProp' that can be called with these arguments
[Error] sqasrvr.pas(615): E2250 There is no overloaded version of 'SetStrProp' that can be called with these arguments
[Error] sqasrvr.pas(794): E2003 Undeclared identifier: 'VarType'
[Warning] sqasrvr.pas(794): W1023 Comparing signed and unsigned types - widened both operands
[Error] sqasrvr.pas(799): E2003 Undeclared identifier: 'VarIsEmpty'
[Warning] sqasrvr.pas(799): W1023 Comparing signed and unsigned types - widened both operands
[Error] sqasrvr.pas(799): E2015 Operator not applicable to this operand type
[Error] sqasrvr.pas(799): E2015 Operator not applicable to this operand type
[Error] sqasrvr.pas(807): E2003 Undeclared identifier: 'NULL'
[Error] sqasrvr.pas(826): E2003 Undeclared identifier: 'VarArrayCreate'
[Error] sqasrvr.pas(897): E2003 Undeclared identifier: 'VarAsType'
[Error] sqasrvr.pas(965): E2003 Undeclared identifier: 'VarArrayCreate'
[Error] sqasrvr.pas(982): E2003 Undeclared identifier: 'UnAssigned'
[Error] sqasrvr.pas(1060): E2003 Undeclared identifier: 'VarArrayCreate'
[Error] sqasrvr.pas(1157): E2003 Undeclared identifier: 'VarIsArray'
[Error] sqasrvr.pas(1158): E2003 Undeclared identifier: 'VarArrayHighBound'
[Error] sqasrvr.pas(1159): E2003 Undeclared identifier: 'VarArrayCreate'
[Error] sqasrvr.pas(1187): E2003 Undeclared identifier: 'VarArrayCreate'
[Error] sqasrvr.pas(1253): E2003 Undeclared identifier: 'VarIsArray'
[Error] sqasrvr.pas(1254): E2003 Undeclared identifier: 'VarArrayHighBound'
[Error] sqasrvr.pas(1255): E2003 Undeclared identifier: 'VarArrayCreate'
[Error] sqasrvr.pas(1279): E2003 Undeclared identifier: 'VarArrayCreate'
[Error] sqasrvr.pas(1313): E2003 Undeclared identifier: 'VarIsArray'
[Error] sqasrvr.pas(1314): E2003 Undeclared identifier: 'VarArrayHighBound'
[Error] sqasrvr.pas(1315): E2003 Undeclared identifier: 'VarArrayCreate'
[Error] sqasrvr.pas(1338): E2003 Undeclared identifier: 'VarArrayCreate'
[Fatal Error] stat.dpr(11): F2063 Could not compile used unit '..\STAT\sqasrvr.pas'

这是怎么回事?
作者: pcl2004_27    时间: 2004-12-21 22:43
我提供的Delphi enabler在delphi 7下调试通过,我修改了部分内容

楼上引用错误的解决方法不正确,delphi 6 到delphi7其中delphi经过升级,其中部分类库发生了变化,语法也经过了改进!

rational robot delphi enabler只支持delphi 4,5,6,现在在delphi 7中引用肯定发生问题,但是这个问题是Warning所以没有问题

你在sqasrvr.pas文件中打开delphi的一个编译开关,具体的看我提供的delphi enabler中的代码
作者: pcl2004_27    时间: 2004-12-21 22:46
sesamehch在回答sharpwood的朋友的时候提到引用ole2.dcu这是不正确的
应该在delphi的配置工程选项参数中设置查找路径,把ole2.dcu的所在路径添加进来

其实大家在讨论这个问题其实找个delphi的开发书看一下前两章的内容就可以解决问题。引用是什么,工程文件和窗体文件的差别
作者: sharpwood    时间: 2004-12-22 08:26
斑竹能不能把修改后的sqasrvr.pas 贴一下,我其实是把Ole2.dcu文件拷贝到了lib的目录下面,就能找到了.
但是还是提示了好多变量没有声明,打开某个编译开关就可以吗?
请教.................
作者: sesamehch    时间: 2004-12-22 10:43
sorry。偷懒没有阐述清楚。以为楼上的能看懂。PCL兄说的很对。

另外楼上的你在编译开关里把VER140添加进去就行了。
作者: sharpwood    时间: 2004-12-22 11:40
我已经编译通过了,但是还是没法支持delphi程序啊。

连简单的listview都不支持,鼠标傻愣在那里不动。

是不是 工程项目中加入这个单元 用add添加进来就OK了?还要做其他操作吗?
作者: sesamehch    时间: 2004-12-22 12:55
在工程里加入那个单元就可以了,不用其他操作。

因该就可以啦。怎么会不行呢?鼠标傻愣在那里不动是什么意思啊?你是怎么操作的?
作者: sharpwood    时间: 2004-12-22 13:35
就是回放的时候鼠标不能识别delphi控件,不动。
但是我录制的时候可以识别到listview、button等。
这是怎么回事呢?
作者: sesamehch    时间: 2004-12-22 14:27
你调试一下,看看到哪一句就走不动了,再分析一下原因。
作者: alfra    时间: 2004-12-22 17:19
成功!!!!!thanks!!!!!!

作者: sharpwood    时间: 2004-12-22 17:20
如果我把这个sqasrvr.pas文件加入到delphi工程中,那么编译后的exe文件是不是可以被没有装过delphi enabler的robot识别呢?

我现在是不是需要装delphi enabler呢?
作者: sesamehch    时间: 2004-12-22 17:48
把这个sqasrvr.pas文件加入到delphi工程后,就不需要装delphi enabler了。

Robot就可以识别了。
作者: sharpwood    时间: 2004-12-22 21:58
Sub Main
    Dim Result As Integer

    'Initially Recorded: 2004-12-22  21:53:06
    'Script Name: test
   
    Window SetContext, "Caption=Program Manager", ""
    ListView DblClick, "Text=FolderView;\;ItemText=快捷方式 到 stat.exe", "Coords=33,30"
    以下部分不能回放了,鼠标不动了。
    Window SetContext, "Name=FormMain;Type=Form;VisualText=STAT", ""
    ListView Click, "Name=ListViewList;Type=CustomListView", "Coords=19,104"
    ListView DblClick, "Name=ListViewModel;Type=CustomListView", "Coords=94,12"

End Sub

这是我录制的教本,只是前面的一小段,但是只能执行到双击快捷方式,不能回放单击listview,后面都不动了,请问这是怎么回事?
作者: sesamehch    时间: 2004-12-23 09:19
你上面的脚本全都是通过录制得来的吗?

你试下把Window SetContext, "Name=FormMain;Type=Form;VisualText=STAT", ""
改成Window SetContext, "Name=FormMain;Type=Form", ""看行不行
作者: sharpwood    时间: 2004-12-23 09:51
都是录制来的,我试了一下,button可以识别,但是listview不能识别。

我按你说的改了也不行。
作者: sesamehch    时间: 2004-12-23 10:29
那你再试试用
StartApplication "你的stat.exe程序"
来打开你的程序,不要用双击快捷方式。
作者: sharpwood    时间: 2004-12-23 11:45
还是不行。

为什么有些控件可以识别有些不能识别呢?
作者: sesamehch    时间: 2004-12-23 12:14
没理由啊,不管识别得了识别不了,录制好了之后,就可以回放啊。

你再用SqaGetproperty方法看能不能获取到控件信息,result返回什么值。调试一下

对你的环境还不是很了解,根据你提供的信息来分析应该没问题啊。
作者: sharpwood    时间: 2004-12-27 09:55
谢谢大家,特别是sesamehch给了我很大帮助,我的问题已经解决,可能是我的robot配置问题,麻烦大家了。
作者: johnson_cong    时间: 2005-3-10 18:34
标题: 强,给了我很大的帮助,我解决了

作者: 牛呆呆    时间: 2006-2-22 11:01
标题: 谢谢各位大虾指点,可否发一份 sqasrv.pas
谢谢各位大虾指点,可否发一份 sqasrvr.pas 给我?
邮件地址:aa_charge@sina.com

再次致谢!

[ 本帖最后由 牛呆呆 于 2006-2-22 11:03 编辑 ]
作者: eric.y    时间: 2006-3-6 20:18
请问在每个项目的新版本(比如增加了新的控件)中都要,进行这样的编译吗?
作者: sumagon    时间: 2007-5-20 12:10
受益匪牵啊~赞一个!
作者: songjun1201    时间: 2007-9-15 18:34
标题: 我也引用了怎么不行啊!
请高手说的再详细一点
作者: flytesting    时间: 2007-9-24 16:14
标题: 谢谢
我们的产品也是用defpi开发的
作者: wine_test    时间: 2008-2-23 00:28
娘啊,终于让我看明白了,谢谢大家了,哈哈




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