Mr.Prince 发表于 2009-6-10 16:42:34

QTP如何实现复制粘贴功能

我现在测试的一个软件中有一个输入框,该输入框不支持从键盘输入,只能通过复制粘贴来输入数据,请问能不能用QTP脚本来实现从测试数据文本文件中拷贝测试数据粘贴到该输入框的功能?求达人指教,不胜感激!

ls_721521 发表于 2009-6-10 16:48:22

***.Object.insertAdjacentText  "beforeBegin"," 输入的数据"
试试看行不。

Mr.Prince 发表于 2009-6-10 16:50:38

原帖由 ls_721521 于 2009-6-10 16:48 发表 http://bbs.51testing.com/images/common/back.gif
***.Object.insertAdjacentText  "beforeBegin"," 输入的数据"
试试看行不。
看不懂,达人能给讲讲怎么用么?

ls_721521 发表于 2009-6-10 16:53:56

前面加上你的输入框的对象就行了。
browser()。page。()。webedit(“你的那个输入框”)。Object.insertAdjacentText"beforeBegin"," 输入的数据"

ls_721521 发表于 2009-6-10 16:58:40

回复 1# 的帖子

你的图片挺逗。。。这么可爱的姑娘居然立中指!!

Mr.Prince 发表于 2009-6-10 16:59:53

原帖由 ls_721521 于 2009-6-10 16:53 发表 http://bbs.51testing.com/images/common/back.gif
前面加上你的输入框的对象就行了。
browser()。page。()。webedit(“你的那个输入框”)。Object.insertAdjacentText"beforeBegin"," 输入的数据"
不好使,报错……我这是C\S系统,这句话提示:对象不支持此属性或方法……

Mr.Prince 发表于 2009-6-10 17:00:35

原帖由 ls_721521 于 2009-6-10 16:58 发表 http://bbs.51testing.com/images/common/back.gif
你的图片挺逗。。。这么可爱的姑娘居然立中指!!
嗯嗯,就是看中这个了:lol

ls_721521 发表于 2009-6-10 17:04:37

哦,那个只适合web的。
你可以用模拟键盘操作,用shell对象试试吧。。

Mr.Prince 发表于 2009-6-10 17:06:01

原帖由 ls_721521 于 2009-6-10 17:04 发表 http://bbs.51testing.com/images/common/back.gif
哦,那个只适合web的。
你可以用模拟键盘操作,用shell对象试试吧。。
是考虑过shell对象,ctrl+v倒是简单,怎么从测试数据中ctrl+c难住我了……

ls_721521 发表于 2009-6-10 17:14:47

是啊,ctrl+c如何选择数据呢,用鼠标拖动选中数据?那就得更改qtp的录制方式了。。还要考虑用坐标。。
估计这个不可行吧。。
用别的方法吧,查查api看有没有可用的函数

Mr.Prince 发表于 2009-6-10 17:29:18

太难了,查不到……

intothestorm 发表于 2009-6-10 17:30:45

什么控件这么神奇,不能输入,只能粘贴:lol

peterz 发表于 2009-6-10 17:52:21

原帖由 Mr.Prince 于 2009-6-10 17:29 发表 http://bbs.51testing.com/images/common/back.gif
太难了,查不到……
用模拟录制试试看看。

intothestorm 发表于 2009-6-10 18:20:14

google setClipBoard, getClipBoard

解决问题不能一根筋:lol
你不要老想着怎么ctrl+c, ctrl+v...
退一步海阔天空,你尝试一下怎么通过操作windows的clipboard来解决你的问题。

Mr.Prince 发表于 2009-6-11 09:40:32

原帖由 intothestorm 于 2009-6-10 18:20 发表 http://bbs.51testing.com/images/common/back.gif
解决问题不能一根筋:lol
你不要老想着怎么ctrl+c, ctrl+v...
退一步海阔天空,你尝试一下怎么通过操作windows的clipboard来解决你的问题。
你的意思是把测试数据保存到剪切板吧,这我还真不会,你教教我?

intothestorm 发表于 2009-6-11 09:43:44

貌似vbs不能直接操作粘贴板,我绕过它用IE。

' Have you played this funny game?
str = "Plants Vs Zombies"
setClipBoardData str
Msgbox getClipBoardData

Public Function getClipBoardData
        Set oIE = CreateObject("InternetExplorer.Application")
        oIE.Navigate("about:blank")
        oIE.visible=False
        getClipBoardData = oIE.document.parentwindow.clipboardData.GetData("text")
        Set oIE = Nothing
End Function

Public Sub setClipBoardData(strCopy)
        Set oIE = CreateObject("InternetExplorer.Application")
        oIE.Navigate("about:blank")
        oIE.visible=False
        oIE.document.parentwindow.clipboardData.SetData "text", strCopy
        Set oIE = Nothing
End Sub

Mr.Prince 发表于 2009-6-11 10:37:56

我理解上面的代码是利用IE的地址栏将测试数据拷贝到剪切板,并且隐藏了IE窗口,确实解决了ctrl+c的问题,学习了:lol
非常感谢intothestorm:handshake

shanxi 发表于 2009-6-11 11:05:59

你看看有没有有权限这样调用

function getData(path)
set fso = Createobject("Scripting.FileSystemObject")
set file_p=fso.OpenTextFile(path)
str=file_p.readall()

dim objhtm,flg   
set objhtm=createobject("htmlfile")

flg=objhtm.parentwindow.clipboarddata.setdata("text",str)

end function
getData "d:\a.txt"

hsjzfling 发表于 2009-6-11 11:39:55

哪里需要那么麻烦呢,添加到剪贴板直接使用Mercury提供的对象就好了Set oCB = CreateObject("Mercury.Clipboard")
oCB.SetText "Copy me"
Set oCB = Nothing

Mr.Prince 发表于 2009-6-11 11:53:57

我查了一下帮助,果然如楼上所说,Mercury自带操作剪切板的方法……
页: [1] 2
查看完整版本: QTP如何实现复制粘贴功能