51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 3611|回复: 4
打印 上一主题 下一主题

[原创] QTP无法识别WPF程序的弹出式(Popup)菜单

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2012-11-20 16:10:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
弹出式的菜单,点击按钮后才会弹出,鼠标点击其他地方的时候或者选择菜单项后就会消失,这样的话我用QTP自带的object spy识别的时候无法定位到,录制的时候在弹出的菜单上做操作也不会进行录制,好像是因为popup的菜单和程序主窗口不在同一个frame上面。这种问题有什么好的解决方式么?求高手指点,谢谢!
我试过用虚拟对象,貌似也没法定位到该控件
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2012-11-20 17:09:49 | 只看该作者
补充一下,我把录制方式调整到“Record and Run test on any windows-based application”,录制的时候对弹出菜单上的操作还是不会进行录制。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2012-11-21 16:20:26 | 只看该作者
QTP对弹出式菜单无法录制,但可以通过某种方式(如发送Click x, y, micRightBtn)调出弹出式菜单后,通过Desktop.childobjects获取一个ispopupwindow=true和istoolwindow=true的window,辅助上弹出式菜单大小通常不变的属性,就能定位到这个对象,然后直接对这个对象执行click x,y,x,y需要你想办法获得,比如通过循环语句控制鼠标坐标移动,在每个点上点击后CaptureBitmap保存成带有xy坐标的图片,你再看哪些图片上有你想要的操作,那个坐标就是你应该写点坐标。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2012-11-22 15:40:34 | 只看该作者
QTP对弹出式菜单无法录制,但可以通过某种方式(如发送Click x, y, micRightBtn)调出弹出式菜单后,通过De ...
jack_loo 发表于 2012-11-21 16:20

非常感谢!我试试这种方式
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2012-11-22 16:43:55 | 只看该作者
回复 3# jack_loo

用你说的方法试了下,分别尝试了取桌面和该WPF程序的所有子对象,仅符合ispopupwindow属性等于True这一条件的对象就一个没有,运行结果windowcount为0
代码如下:
WpfWindow("MainWindow").WpfButton("消息").Click
'程序窗口名为MainWindow,点击按钮后该popup菜单弹出
Set popupDescription=Description.Create
popupDescription("ispopupwindow").value="True"
'popupDescription("istoolwindow").value="True"
Set childobjects=Desktop.ChildObjects(popupDescription)
'Set childobjects=WpfWindow("MainWindow").ChildObjects(popupDescription)
Dim windowcount
windowcount=childobjects.count
msgbox windowcount
最后还是找开发商量了下,将使用的控件改了,不用这种弹出式菜单了。
非常感谢你的答复!
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-5-3 16:42 , Processed in 0.077096 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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