51Testing软件测试论坛

标题: 如何准确定位WinObject控件? [打印本页]

作者: rxiaofan    时间: 2008-2-1 14:58
标题: 如何准确定位WinObject控件?
录制步骤: 1) 打开一个excel 2) 点击File-Open菜单 3) 点击左边栏的Desktop 4) 在右边框中选择一个文件 5) 点击Open按钮。
脚本如下:
Window("Book1_2").Activate
Window("Book1_2").WinObject("Worksheet Menu Bar").Click 44,13
Window("Book1_2").Window("File").Click 58,30
Window("Book1_2").Window("Open").WinObject("MSO Generic Control Container").Click 42,98
Window("Book1_2").Window("Open").WinListView("SysListView32").Select "AppSet Building.xls"
Window("Book1_2").Window("Open").Click 535,323

问题:发现点击菜单按钮和desktop的两个控件都是WinObject,竟然都是由坐标来定位的。
有什么办法可以让它们定位更准确嘛?除了用键盘这个方法。
作者: yanzs0120    时间: 2008-2-1 15:08
那个坐标,你是如何录制上去的
作者: rxiaofan    时间: 2008-2-1 15:12
这段脚本是完全录制的,我没有任何改动。
作者: zhou840401    时间: 2008-2-1 15:44
qtp录制windows 程序,不能识别就统一为winobject类型.录制WinObject是会把鼠标点击对象的坐标也录下来的.如果程序可能的话,可以尽量的避免为好.如:点击office的工具栏的打开操作,你可以改为用菜单的打开操作,还有在文件打开的对话框中,不要直接点击Desktop,而是从路径的下拉框中选择Desktop.当然如果你就是要测试office工具栏上的打开操作,那就另当别论了.如果你的目的是要打开一个xls文件,那就可以尽量的避免.
作者: rxiaofan    时间: 2008-2-1 15:59
恩,在excel里我知道是可以避免的。只是这里我是举个例子,我的测试系统里也有这个问题,我没法拿出来演示,我发现excel里也有这个问题,所以就拿上来求教了。我的系统里是没法用键盘规避掉的,只能用点击。

其实我是想知道怎么解决WinObject准确定位的问题。高手们,可以用API嘛?但是我不会这个哦,对于Open对话框的操作API又该怎么写?
作者: lunarever    时间: 2008-2-4 20:17
getmenu获取菜单句柄
getmenuitemid获取所用的菜单功能按钮id
sendmessage发送点击命令过去,sendmessage中的第二个参数用WM_COMMAND,这个参数在qtp里必须直接使用其16进制数值,我记得好像是这样的
sendmessage(窗口句柄,&h0111,菜单按钮的id,0)
如果想点工具栏上的就换获取工具栏按钮的函数,sendmessage应该都是一样的




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