秦菲 发表于 2012-12-26 17:38:59

【已解决】请问大家,如何使用QTP录制图片拖动整个过程

本帖最后由 秦菲 于 2012-12-27 17:06 编辑

我现在想要录制一个动作:
把同界面上的图片从左侧拖到右侧,即
捕获鼠标点击图片开始到放开鼠标整个过程

已经使用过的方法:模拟录制模式,其只能捕获到鼠标的动向

黑羽祭 发表于 2012-12-27 08:55:44

回复 1# 秦菲


    低级录制呢?

秦菲 发表于 2012-12-27 09:13:30

用低级录制,捕获不了拖动这个动作

xjwldlover 发表于 2012-12-27 09:54:47

本帖最后由 xjwldlover 于 2012-12-27 09:55 编辑

录不了就直接写,只是元素的基本方法,不用先录制,示例是一个extJS应用,方法都是一样的

Set Elem = Window("平台").Page("平台").WebElement("流程名称")
' 拖起选定元素 WebElement("流程名称").
Window("平台").Page("平台").WebElement("流程名称").Drag
'将元素放到 WebElement("已选")上并释放鼠标,坐标酌情而定,可选项
Window("平台").Page("平台").WebElement("已选").Drop 300 , 100

秦菲 发表于 2012-12-27 12:37:53

谢谢xjwldlover 的回答,可是坐标一旦改变,其回放貌似会失败
还有我不明白Window("平台")是什么意思,才开始学习,请多多关照哈

秦菲 发表于 2012-12-27 12:42:00

查了有些资料,有人推荐使用GetTextLocation 方法
其举例的代码为:
Sub MoveItemByText(objFrom,strFrom,objTo,strTo)
Dim l,r,t,b,l1,r1,t1,b1'Drag Item by specified text
objFrom.GetTextLocation strFrom, l, t, r, b
objFrom.Drag (l+r)/2, (t+b)/2, 1

' Drop Item on specified text
objTo.GetTextLocation strTo, l1, t1, r1, b1
objTo.Drop (l1+r1)/2, (t1+b1)/2, 1
End Sub
'将hsjzfling从Names列表中拖拽到Result列表的Champion子列表中
Set bjAct = VbWindow("frmOvertime").ActiveX("ActiveX").ActiveX("ActiveX").ActiveX("ActiveX")
MoveItemByText objAct.VbTreeView("Names"), "hsjzfling", objAct.VbTreeView("Result"), "Champion"

我不是很明白的其含义,请哪位大师讲解一下,可好?先谢谢了哈

xjwldlover 发表于 2012-12-27 14:46:48

回复 5# 秦菲

Window("平台").Page("平台").WebElement("已选").Drop 300 , 100

Window("平台") 就是一个对象名,你可以理解为browser("平台"),这个无关紧要
WebElement("已选").Drop 300 , 100: 坐标可以不带;如果不带,就会默认拖放到WebElement("已选")对象的中心位置,然后释放

你下面那团代码,思路是将包含某 某段文字的对象 ,拖放到 包含另段文字的对象上,然后释放。通过文字识别对象,然后操作

秦菲 发表于 2012-12-27 16:03:35

本帖最后由 秦菲 于 2012-12-27 16:05 编辑

用 站友xjwldlover的方法,实现了拖拽,不过也有点不一样了,给大家分享一下
步骤:
(1)录制脚本,获取对象
(2)遇到需要拖拽的地方,把录制模式切换到模拟录制(Analog Rcording)
(3)更改脚本,把需要拖拽的对象的动作更改为Drag
代码:
Browser("XX").Page("XX").WebElement("aaa").Drag//需要拖拽的对象aaa
Desktop.RunAnalog "Track1"
Browser("XX").Page("XX").WebElement("bbb").Click//把拖拽的对象,放在这个文件bbb里面
谢谢大家的帮助:)
页: [1]
查看完整版本: 【已解决】请问大家,如何使用QTP录制图片拖动整个过程