51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4338|回复: 9
打印 上一主题 下一主题

[原创] 使用QTP录制delphi开发的程序,不能运行

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-6-17 14:31:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用QTP录制delphi开发的程序,已经装了delphi的插件,这个是录制一个登录界面,进到系统后,关闭。录制代码如下
Window("登录").WinObject("TPreExtEdit").Click 32,6
Window("登录").WinObject("TPreExtEdit").Type "213"
Window("登录").WinObject("TPreExtEdit_2").Click 53,7
Window("登录").WinObject("TPreExtEdit_2").Type "213"
Window("登录").WinObject("TPanelBG").Click 33,11
Window("系统").WinObject("TPanel").Click 1426,17
我已经在

resources->object repository中添加了delphiname 删除了windowsID这个选项,运行的时候,就出现如图的问题,请问,这该怎么解决,麻烦各位帮忙看看,谢谢。
在补充一下,登录界面中的edit是自定义的组件,不是delphi自带的,这个该怎么做呢?

[ 本帖最后由 懵懂的女孩 于 2009-6-18 17:40 编辑 ]

本帖子中包含更多资源

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

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

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2009-6-17 15:19:33 | 只看该作者
怎么没有人回答呢?麻烦大家帮忙想想办法,这个问题到底该怎么解决呢?我用了模拟录制,但是只有一行代码,虽然可以运行登录的整个过程,但是要对用户名和密码参数化,该在什么地方做参数化呢?,模拟录制的代码如下 Desktop.RunAnalog "Track1"
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2009-6-18 12:04:42 | 只看该作者
对象没有找到
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2009-6-18 15:49:07 | 只看该作者
那就用描述性对象编程来对你的那个登陆窗口进行识别吧
你搜艘好多帖子
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2009-6-18 17:38:15 | 只看该作者

回复 4# 的帖子

请问能不能具体讲一下,谢谢。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2009-6-23 16:27:30 | 只看该作者
怎么没人回答呢?
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2009-6-24 09:46:41 | 只看该作者

转点别人的东东给你看看。

①:QTP对Delphi的支持
目前用的是XP sp3+QTP9.5+Delphi add-in,Delphi是种比较老的开发语言,所以不可避免的大量的应用了第三方插件,所以QTP对其系统的支持其实很弱。Delphi add-in可以在HP主页上下载到,需要xp sp3才可以安装。装上插件后,基本上全部控件可以用delphi_name这个属性来唯一标示出来,而且可以提取标准delphi控件的属性,但是对第三方控件的属性依然基本上无解。
这里有个小提示
仅仅装上插件是无法获取delphi_name属性的,需要改一些delphi系统代码并且重新编译下。这个最好是自己找开发人员确认下。毕竟作为一个测试人员随便改代码是很不厚道的。这点从帮助文档里面可以得到详细的帮助,内容如下
1:Add MicDelphiAgent to the Uses section of your application's project file (project.dpr) as shown in the example below
program flight;
uses
MicDelphiAgent,
Forms,
       Windows;
($R*.RES)
begin
Application.Initialize
Application.Title :='Flight Reservation';
Application.Run;
end.
2:Add the <QuickTest Professional Installation folder>\dat\Extensibility\Delphi folder to your Delphi project search path or copy the contents of the <QuickTest Professional Installation folder>\dat\Extensibility\Delphi folder to your project folder.
              
②:Delphi系统往往需要做出键盘事件,这个有很多实现方法,这个项目里的系统全键盘基本都是功能的快捷键,而且大键盘和小键盘的数字代表不同的功能,所以最后调用Windos API中的keybd_event来实现。
QTP调用windows api用extern.Declare
具体调用keybd_event方法的代码如下
extern.Declare micvoid,"keybd_event","user32.dll","keybd_event",micByte,micByte,micLong,micLong

extern.keybd_event 96,0,0,0                        
extern.keybd_event 96,0,2,0

96是小键盘上0的键盘码 第三个参数0是键盘按下动作,2是键盘弹起动作
友情提供:送一个小键盘数字串连续输入的方法。
Sub NumInput(num)
              extern.Declare micvoid,"keybd_event","user32.dll","keybd_event",micByte,micByte,micLong,micLong
                            If num <> "" Then
                                          sum = Len(num)
                                          For i=1 To sum
                                                        num = Mid (num,i,1)
                                                        Select Case num
                                                                      Case "0"
                                                                                    key1=96
                                                                      Case "1"
                                                                                    key1=97                                          
                                                                      Case "2"
                                                                                    key1=98
                                                                      Case "3"
                                                                                    key1=99
                                                                      Case "4"
                                                                                    key1=100
                                                                      Case "5"
                                                                                    key1=101
                                                                      Case "6"
                                                                                    key1=102
                                                                      Case "7"
                                                                                    key1=103
                                                                      Case "8"
                                                                                    key1=104
                                                                      Case "9"
                                                                                    key1=105
                                                        End Select
                                                        extern.keybd_event key1,0,0,0  
                                                        extern.keybd_event key1,0,2,0
                                          Next  
               End If
End Sub

③:第三方插件的问题,这是用QTP测Delphi系统最恶心的地方。试着和开发人员多沟通下,看看能不能有什么变相的解决办法吧。我们是意外的发现了开发人员在做单体测试时候有一个用标准delphi控件开发的工具,可以取得当前系统的大部分属性值。于是最后采用在delphi系统里执行动作,在这个标准控件开发的工具里取得值进行测试的方法。测试人员和开发人员是一条绳上的蚂蚱,试着和他们去多多的沟通,看看他们有没有或者会不会去帮你做这么一个第三方的工具。
④:速度问题,CS系统不像Web,可以靠sync来知道页面有没有响应完全。所以响应时间是个问题,也就是有时候QTP太快了。。。。。。
目前的解决办法一个是在脚本里加wait 最好是加在一些常用的共通方法里,比较容易控制。另一个就是先做出判断,再进行下一步动作,比如判断某控件的某属性变化到了预期目标,再进行下一步动作。
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2010-2-25 10:47:28 | 只看该作者
我也很想知道怎么解决此问题!
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2010-5-7 15:31:22 | 只看该作者
我的也是这个问题,楼主解决了麻烦分享下经验
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2015-10-6 11:29
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    10#
    发表于 2010-6-3 15:06:38 | 只看该作者
    现在遇到Delphi第三方控件做的东东,QTP还真没有什么办法
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-12 16:50 , Processed in 0.082804 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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