51Testing软件测试论坛

标题: 如何获得鼠标点击的坐标 [打印本页]

作者: 金城月    时间: 2007-5-23 17:25
标题: 如何获得鼠标点击的坐标
如题所示:我现在需要找到鼠标点击菜单后,鼠标的位置,其实我就是需要找到当前鼠标点击的菜单的位置。但是因为听说菜单的属性里没有XY坐标和width height,所以就想用鼠标的位置来代替。

不知道用什么函数可以求得返回值呢?
作者: wssgily    时间: 2007-5-23 17:45
用那个画图工具可以解决你的问题,你是不是就想得到坐标是吧
作者: 金城月    时间: 2007-5-23 20:19
什么画图工具阿?我初学者不懂啊。
作者: 风过无息    时间: 2007-5-24 09:57
听说菜单的属性里没有XY坐标?很疑惑...(为什么是听说呢?)
楼主假如只想在固定位置做点击操作,就用低级别的录制模式可以实现.
作者: yuandjing    时间: 2007-5-24 11:29
object.Click [X], [Y], [BUTTON]

object: A test object of type WinButton.
X:Optional. An Integer value.
The x-coordinate of the click. Note that the specified coordinates are relative to the upper left corner of the object.  Default = micNoCoordinate (-9999) -- center of the object.
Y:Optional. An Integer value.
The y-coordinate of the click. Note that the specified coordinates are relative to the upper left corner of the object.  Default = micNoCoordinate (-9999) -- center of the object.

Tip: You can enter micNoCoordinate (-9999) for the x and y argument values if you want to enter a value for the button argument without specifying x- and y- coordinates for the click. micNoCoordinate indicates the center of the object.

BUTTON: Optional. A predefined constant or number. See the Constants table, below.
The mouse button used to click the object. Default = micLeftBtn (0).
按照这个函数打参数就可以了
作者: yuandjing    时间: 2007-5-24 11:30
X和Y就是鼠标点击的坐标
作者: 金城月    时间: 2007-5-24 13:06
谢谢楼上的朋友,但是我不是input值,我是要取得鼠标点击后的返回值。
就是脚本运行过程中,返回鼠标坐标给程序中的变量x,y,然后我要用x,y的值传给后面的函数作参数。
作者: 金城月    时间: 2007-5-24 15:44
返回鼠标坐标给程序中的变量x,y,然后我要用x,y的值传给后面的函数作参数。

help...
作者: yuandjing    时间: 2007-5-24 17:23
今天快下班了,明天继续帮你看看
作者: yuandjing    时间: 2007-5-25 09:26
我看起来帮不了你了,试过了,不行,帮助手册也没有相关的函数
期待高手出现。。。
作者: 金城月    时间: 2007-5-25 15:30
虽然没有找到解决方法,但大家的热心帮助我现在这里说声谢谢了。

一直答案寻找中。。。
作者: walker1020    时间: 2007-12-3 21:31
一般来说,对象的属性里面都有 x,y 这两个属性,还有 abs_x  abs_y呀。既然是做测试的,为什么还要“听说”呢?
作者: walker1020    时间: 2007-12-3 21:32
莫非你需要的 是 GetROProperty  函数?
作者: gy21st    时间: 2007-12-3 22:32
版主,你理解错了。LZ要返回鼠标位置坐标。我查了一下API,GetcusorPos返回值有一个是结构参数。而QTP中不支持使用结构参数的windows api.这个似乎是有点麻烦。

Syntax

    BOOL GetCursorPos(      
        LPPOINT lpPoint
    );

Parameters

    lpPoint
        [out] Pointer to a POINT structure that receives the screen coordinates of the cursor.

Return Value

    Returns nonzero if successful or zero otherwise. To get extended error information, call GetLastError.
作者: xazaj    时间: 2007-12-3 22:39
不知道你为什么要获得这个坐标,是不是你点击菜单的操作无法回放呢? 还有一些二级菜单也会出现录制无法回放,并且不能获取对象,这些都有其他解决办法的!如果事实是这样,就不要走下面的弯路了!
    如果你确实需要坐标,我这里有两个解决方案,也许能用上,我没验证:
方案一:使用low level record 录制一下这里的操作,后面会直接给出当前操作的坐标;
方案二:使用GetTextLocation 方法,把TextToFind 属性设置成你需要获取坐标处的字符,他会给你返回标准的坐标值。

    建议使用第二种方法获取,这个返回的坐标值应该可以赋予其他变量使用!
    只是给你一些解决方案!希望能帮上忙!
作者: jifeng    时间: 2007-12-3 22:52
好像都没能准确得到LZ要的答案阿,楼上各位确实是一个思路,但有没有更好的方法呢?
我现在也需要返回鼠标点击的坐标,用于后续脚本的操作,大家再讨论讨论阿!
作者: gy21st    时间: 2007-12-4 01:19
原帖由 jifeng 于 2007-12-3 22:52 发表
好像都没能准确得到LZ要的答案阿,楼上各位确实是一个思路,但有没有更好的方法呢?
我现在也需要返回鼠标点击的坐标,用于后续脚本的操作,大家再讨论讨论阿!


你如果确实想要光标的具体坐标,并不是很麻烦的。不过要多动几下手了。
思路很简单。用其他高级语言,最好是c或c++生成一个动态库,把winapi函数GetCursorPos再包装一下,返回两个值,即坐标X和Y,而不是一个结构。这样QTP就支持了。 动态库注册一下,再用extern.declare声明DLL中包装过函数。这样QTP中就可以调用了。
作者: pxwcypx    时间: 2007-12-4 09:19
哈哈越说越远啦
作者: 板砖    时间: 2007-12-4 10:49
你是想执行按座标位置点击鼠标?
还是取到鼠标当前座标?
作者: 423799223    时间: 2008-7-2 11:59
我觉得如果QTP不行的话  不如拿c#写个dll获取鼠标的xy坐标  这样不是解决了么
作者: fonny    时间: 2011-2-14 17:48
可以这么获得
Set ctlr = DotNetFactory.CreateInstance("System.Windows.Forms.Control")'创建对象,为了获取鼠标位置
dim x,y
x=ctlr.MousePosition.X'鼠标所在的坐标的X
y=ctlr.MousePosition.Y'鼠标所在的坐标的Y
关于System.Windows.Forms.Control的详细说明,可以到msdn上看看




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