(原)QTP中用VBS调用PLSQL并执行相关语句 

上一篇 / 下一篇  2009-07-27 00:18:42 / 个人分类:qtp

今天工作的需求是要在录制一段web程序之前要调用plsql并执行一段数据库代码清空相关数据才能做web录制测试

本来是想用QTP直接录制plsql的,但是后来发现自己对qtp录制window application并不是很了解,选定了 Automation菜单下的Record and Run Settings中的制定plsql程序的路径,一录制竟然也代开了web的初始页面,后来发现是要把web的Record and Run Settings中设置成第一个选项 Record and run on any browser才不弹出来了。

 后来发现,竟然qtp录制plsql的脚本就像低级录制的脚本一样,是用坐标表示的(Window("Oracle Logon").WinObject("test").Click 44,8)。回放一点反应都没有。不行,时间紧迫,我得另外想办法搞定这个plsql。

直接用vbs代码写了段调用调用PLSQL并执行相关语句的片段。运行成功,搞定!!。。

代码中对plsql的路径和用于运行的语句(从doc中复制的呵呵)DOC文件路径进行了判断,如果不正确将提示修改路径,一直到路径核对正确为止,如果两个路径都正确,则直接call dosub().

本来想通过字段赋值再sendkeys到plsql中指定的语句,但是后来发现语句中有特殊字符,读到plsql中的时候很慢而且有乱码,所以后来想用vbs操作了下word,直接从word中复制语句再在plsql中粘贴了.(从plsql中打开我试过了,没有句柄不行,ctrl+o不执行。)

VBS代码:

'----------------------------定义变量-------------------------------------------
Dim oApp,oDoc,fso,exepath,docpath,inputexestr,inputdocstr,inputexestr2,inputdocstr2,confirmexepath,confirmdocpath,exefile,docfile
exepath = "C:\Worksoft\plsql\PlSqlDev.exe"
docpath = "C:\StudyInfo\Study\VBS\ReadyData.doc"
'----------------------------创建系统对象------------------------------------
Set Wshell=CreateObject("Wscript.Shell")
set fso=CreateObject("Scripting.FileSystemObject")
'----------------------------判断plsql路径和doc文件路径是否存在----------------------
Call maincheck()

Sub   checkexeway()
inputexestr = InputBox("请确认或输入您的plsql程序路径:"&vbnewline&"如果此路径正确请点击OK!","PLSQL路径确认",exepath)
inputexestr2=  fso.FileExists(inputexestr)  
    If  inputexestr2<>"" and  inputexestr2 = True Then
      confirmexepath = inputexestr
      call checkdocway()
      else
        call  checkexeway()
    End If
End Sub

Sub   checkdocway()

inputdocstr = InputBox("请确认或输入您的DOC文件路径:","DOC文件路径确认",docpath)
inputdocstr2=  fso.FileExists(inputdocstr)
    If  inputdocstr2<>"" and  inputdocstr2 = True  Then
      confirmdocpath = inputdocstr
        call  Dosub()
      else
        call  checkdocway()
    End If
End Sub

Sub maincheck()
   exefile = fso.FileExists(exepath)
   docfile = fso.FileExists(docpath)
   If  exefile =true and  docfile =true Then
      confirmexepath = exepath
      confirmdocpath = docpath
      call Dosub()
 else 
    call checkexeway()
 End If
end sub

'-------------------------------------------调用plsql并运行语句过程--------------------------------------------

Sub Dosub()
   'msgbox confirmexepath
  'msgbox confirmdocpath
  Set App = CreateObject("Word.Application")
  oApp.visible = true
  Set Doc = oApp.Documents.Open (confirmdocpath)
  Wshell.AppActivate "ReadyData.doc - Microsoft Word"
  oApp.selection.WholeStory
  oApp.selection.copy
  oDoc.close
  oApp.quit
  
  Wshell.SendKeys "{Left}"
  Wshell.SendKeys "{Enter}"
  wait 5
  
  wait 2
  set exec=Wshell.Exec(confirmexepath)
  wait 2

 '这里直接输入密码test,因为plsql默认了用户名不用输入,没有默认就需要前面再加   个sendkeys了
  Wshell.SendKeys "test"   
  wait 1
  Wshell.SendKeys "{TAB}"

'这里输入服务器名称.要确保你的oracal的tnsname里面有这个服务器名.
  Wshell.SendKeys "cis170"
  wait 2
  Wshell.SendKeys "{ENTER}"
  wait 4

'把刚才从word复制的内容粘贴到plsql
  Wshell.SendKeys "^v"
  wait 2

'运行语句快捷键f8
  Wshell.SendKeys "{F8}"
  wait 5

'提交语句commit快捷键f8
  Wshell.SendKeys "{F10}"
  wait 2
  Wshell.SendKeys "%{F4}"
  wait 2
  Wshell.SendKeys "{Right}"
  Wshell.SendKeys "{Enter}"
End Sub


TAG:

 

评分:0

我来说两句

我的栏目

日历

« 2024-04-18  
 123456
78910111213
14151617181920
21222324252627
282930    

我的存档

数据统计

  • 访问量: 6375
  • 日志数: 7
  • 建立时间: 2009-07-27
  • 更新时间: 2009-07-30

RSS订阅

Open Toolbar