51Testing软件测试论坛

标题: QTP怎样才能往word里面写东西? [打印本页]

作者: xyz03    时间: 2007-6-28 15:19
标题: QTP怎样才能往word里面写东西?
最近在测一个OA系统,需要新建正文,就是打开word文档,往里面写了东西后,保存。

qtp好像也能录,但是脚本里没有记录。回放的时候,不能打开新的word文档,不往里面写内容,请教,这到底是怎么回事?
有办法解决吗?

[ 本帖最后由 xyz03 于 2007-6-28 16:20 编辑 ]
作者: mcl19800627    时间: 2007-6-28 15:26
我也不会,帮你顶一下
作者: vincenthan    时间: 2007-6-28 16:12
好象还真不行,是不是得自己编程实现啊,看看有没有高手路过sdlkfj7
作者: Ramon22    时间: 2007-6-28 17:04
是不是可以去Microsoft的网站,看看Word对外的接口。就像Excel似的。这是我的猜测。希望使用过这方面知识的人,出来指导一下。期盼中!
作者: smallmark    时间: 2007-6-28 17:08
用txt不是挺简单嘛,干嘛非要用word!
作者: zhuyuancan    时间: 2007-6-28 17:26
等待中.........
作者: xyz03    时间: 2007-6-28 17:48
有点明白为什么不能新建正文了。我用robot录得时候,发现它记录的word文档的标题就是一长串的随机数字,比如2007@6@28@16790ce2-8919-44fe-a765-32616d8ad406@正文.doc

回放时,因为每次点击新建正文按钮后,word文档的标题可能和你刚录的不一样,所以如果还是那个word标题的话,就无法转到那个word文档的窗口。

但是我觉得这随机的数字应该是有规律可循的,但是到底有什么规律,只有开发人员才能知道了……

希望我的说法能启发你的思路哦

[ 本帖最后由 xyz03 于 2007-6-28 17:56 编辑 ]
作者: 风过无息    时间: 2007-6-28 19:16
Set oWord = CreateObject("Word.Application")
oWord.documents.open "c:\temp.doc",ForWriting, True
Set oDoc = oWord.ActiveDocument
Set oRange = oDoc.content
oRange.insertafter "test"
Set oRange = Nothing
Set oDoc = Nothing
Set oWord = Nothing



http://www.51testing.com/?3528/action_viewspace_itemid_14888.html
作者: lovelovecat    时间: 2007-6-28 19:29
好强啊,哈哈

[ 本帖最后由 lovelovecat 于 2007-6-28 19:32 编辑 ]
作者: walker1020    时间: 2007-6-29 09:19
建议大家有时间去看一下 VBScript方面的资料或书籍,在 [QTP精华区] 就有这方面的资料
作者: loho1968    时间: 2007-6-29 09:32
先创建一个Word对象
作者: loho1968    时间: 2007-6-29 09:32
然后直接操作这个Word对象,具体的语法可以先通过Word中的VBA录制,然后修改调整 。
作者: vincenthan    时间: 2007-6-29 18:00
Set oWord = CreateObject("Word.Application")
oWord.documents.open "c:\temp.doc",ForWriting, True
Set oDoc = oWord.ActiveDocument
Set oRange = oDoc.content
oRange.insertafter "test"
Set oRange = Nothing
Set oDoc = Nothing
Set oWord = Nothing
执行完以后为什么WORD文档打不开啊
作者: vincenthan    时间: 2007-6-29 18:07
oWord.documents.open "c:\temp.doc",ForWriting, True这是什么语言,不是VBS吧,我在帮助里查不到sdlkfj7
作者: suifengpiao    时间: 2007-7-30 09:04
OA里面word文档一般用的是控件
作者: Dorpnight    时间: 2007-8-16 11:42
标题: 回复 #1 xyz03 的帖子
SystemUtil.Run "C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE","","",""
Window("Microsoft Word").WinObject("Microsoft Word Document").Click 470,521
Window("Microsoft Word").WinObject("Microsoft Word Document").Type ""
作者: zengfanjin5588    时间: 2007-8-16 16:48
版主真强
作者: dee    时间: 2007-8-18 21:14
刚链去斑竹的BLOG看了下,发现还有不少相关的好文章..

大家有空可以去看看...
作者: yt1985cncn    时间: 2007-8-23 15:37
为什么执行完,打开WORD文件,再关闭时会要求你保存啊,点了保存又说是只读文件,无法保存~~
作者: yuandjing    时间: 2007-8-23 17:36
可以调用QTPPLUS的函数
Function NumberOfSpellErrors(strText)

  Dim objMsWord

  Set objMsWord = CreateObject("Word.Application")

  objMsWord.WordBasic.FileNew

  objMsWord.WordBasic.Insert strText

    NumberOfSpellErrors = objMsWord.ActiveDocument.SpellingErrors.Count

    objMsWord.Documents.Close (False)

    objMsWord.Quit ' close the application

    Set objMsWord = Nothing' Clear object memory

End Function



' The following function uses the Spell errors function to check a specific property

' of all the objects with a given description which are under a given Parent

Sub CheckAllObjects(ParentObj, ObjDesc, PropName)

    Dim ObjCol, idx, PropValue, OldReportMode

    OldReportMode = Reporter.Filter

    Reporter.Filter = 2 ' report only errors

    If (IsNull(ParentObj)) Then

        Set ObjCol = Desktop.ChildObjects(ObjDesc)

    Else

        Set ObjCol = ParentObj.ChildObjects(ObjDesc)

    End If



    For idx=0 to ObjCol.count-1

        PropValue = ObjCol.Item(idx).GetROProperty(PropName)

        RetVal = NumberOfSpellErrors(PropValue) ' the actual spell check

        If (RetVal > 0) Then

            ReportText = "Object #" & idx+1 & ": The '" & PropName & "' Property has " & RetVal & " spell errors (" & PropValue & ")"

            Reporter.ReportEvent 1, "Spell Check", ReportText

        End If

    Next

    Reporter.Filter = OldReportMode

End Sub
作者: 沙漠飞雪    时间: 2010-12-10 16:50
如果在linux下,测试OpenOffice呢?
作者: iamfeiyu1009    时间: 2010-12-10 21:00
这样也可以写的,不过读时会出现乱码
建议你可以查看word帮助里的vb参照
Const ForReading = 1, ForWriting = 2, ForAppending = 8

  Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0

  Dim fso, f, ts

  Set fso = CreateObject("Scripting.FileSystemObject")

  Set f = fso.GetFile("c:\test1.txt")

  Set ts =f.OpenAsTextStream(ForWriting,TristateUseDefault)

  ts.Write "Hello World"

ts.close




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