51Testing软件测试论坛

标题: 基础代码交流贴 [打印本页]

作者: kai_top    时间: 2005-9-14 10:06
标题: 基础代码交流贴
这两周我开始学习QTP测试我们的web服务了;大体的软件使用操作流程是懂了,但具体实施起来特别是代码的组织及函数应用还有一些困难,因为自己只会vb没学习vbscript,所以想和大家交流一下代码等一些基础知识;呵呵,一起学习,加强记忆与应用。

1 生产随机数列
第一种方法
  1. Randomize   '更新返回的数据(Initialize random-number generator)
  2. Function rand(k)
  3. n = Int((k-1)* Rnd +1)
  4. rand = n
  5. End Function
复制代码

第二种方法
  1. n=randomnumber.value(1,255)
复制代码


2  当运行到表中的某一行,自动导出表中的所有数据
  1. row=datatable.getcurrentrow
  2. if row="5" then
  3.   datatable.export("d:\data.xml")
  4. end if
复制代码
3
  1. webedit("txtpass").setsecure"sdsdf...."
复制代码
如果参数化密码,可以直接在数据表中写入未加密的密码,它会自动识别,即不用把setsecure改为set

4 如果弹出对话框就获取上面提示信息并与表中的信息对比,不统一证明弹出的提示出错,主要用来验证
  1.  if browser("web_name").dialog("dialog_name").exist(1) then'如果不出现=false
  2.      error_message=browser("web_name").dialog("diaglog_name").static("用户密码错误!".getRoproperty("text")
  3.    if error_message<>(datatable.value("error_info"))then
  4.          msgbox(error_message)
  5.       end if
  6.      browser("web_name").dialog("diaglog_name").close
  7.   end if
复制代码


    这里我总结了两点技巧:
  一是:对于dialog中,虽然提示信息对象名称是"用户密码错误",但如果信息对象名称是“该用户不存在”,不用更改会自动识别,我想主要是录制第一遍时,“用户密码错误”只是让运行时能找到这个控制,而不管它是什么内容,因为在对象仓库中,text不是决定该对象的属性
    二是:如果对于提示信息比较长的,可以用mid(error_message,n,m)取一部份特征提示信息进行验证,这样我想可以节省处理时间,又可以避免长度以及空格等字符的处理
5  datatable.value("num")只在global形式下的一种省略形式;完整形式
是:
  1. datatable.value("num",dtlocalsheet)
复制代码

5.1 向某一列的单元格赋值:
  1. datatable.value("column_name",dtlocalsheet)="nanjing"
复制代码

5.2 取得某一行具体值:

  1. datatable.setcurrentrow(n)
  2. msgbox(datatable.getsheet("global").getparameter("column_name").Rawvalue)
  3. 或者kk=datatable.Rawvalue("column_name","action1")
复制代码

  5.3 在run-time时,动态添加表格与数据

  1. kk=datatable.addsheet("sheet_name").addparameter("column_name","value").name;
复制代码


6   wintreeview一些操作

  1. 选择一个条目:wintreeview.select(item)'根是0
  2. 根的名称:wintreeview.getitem(0)
复制代码


7   数据库检查点模块:

  1. sub database_check
  2. set con=createobject("adodb.connection")
  3. con.open "Description=IBM_ODBC;DRIVER=SQL Server;SERVER=IBM;UID=sa;"&_
  4.                  "PWD=123456;APP=Quick Test Pro;WSID=IBM;DATABASE=IBM_table"
  5. 'access方式:con.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=d:\test.mdb"
  6. 'Orocle方式:con.open "DRIVER={Oracle in OraHome92};SERVER=CESHI;UID=CND_TEST;PWD=CND;DBQ=CESHI;DBA=W;APA=T;EXC=F;XSM=Default;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;GDE=F;FRL=Lo;BAM=IfAllSuccessful;MTS=F;MDI=Me;CSR=F;FWC=F;PFC=10;TLO=O;"
  7. set record=createobject("adodb.recordset")
  8. sql="select*from ibm_one_table"
  9. record.open sql,con
  10. DO
  11. if(record("ibm_table_column")="kai")then'//查找表格中有多少kai
  12. num=num+1;
  13. end if
  14. record.movenext
  15. loop until record.eof=true
  16. record.close
  17. set record=nothing
  18. con.close
  19. set con=nothing
  20. end sub
复制代码


8   换行符
  1. vbcr----chr(13)回车符// vblf----chr(10)换行符
  2.     vbcrlf----chr(13)+chr(10)结合//type(chr(13)就相当于按了一上键盘上的enter
复制代码


9  Run from step有两种方式:

  1. 在Keyword View模式会从本步骤运行到所有action结束
  2. 在expert view模式仅会将本action运行结束
复制代码


10  由于对象属性原因,无法识别对象

  1. -----对于对象属性是变化的,可以参数化/或者用正则表达式
  2. -----报匹配多个对象错误,可以spy查看对象,添加一个该对象另一个唯一标识属性
  3. -----有时可以删除对象的变化的属性来解决识别问题
  4. ------对于多个完全相同的对象,可以采用添加index,location,createtime等特殊属性来识别
  5.   (index:按照程序源码,绘制对象的先后标识对象,所以与其它相同对象是相互依赖,当其它对象发生
  6.   变化后,原先的所有对象index属性要发生变化,开始是0;如index:=0;
  7.         location:根据对象的位置进行确定,从上到下,从左到右;
  8.   CreateTime:按照对象被浏览器打开的先后标识对象)
  9. ------另外换一种思维方式,采取等效的方法;比如用键盘代替鼠标或用操作系统本身特性去解决问题
复制代码


11  对系统文件的操作

  1.   11.1 从系统的文件中获取信息及删除文件
  2.   get_file_infor("c:\she.mpg")
  3.    function get_file_infor(url)
  4.     dim fso,f
  5.     set fso=createobject("scripting.filesystemobject")
  6.     set f=fso.getfile(url)
  7.     f.name:f.size:f.type:f.datacreated'///获取文件信息
  8.     fso.deletefile(url)'/////删除文件
  9.    end function

  10. 11.2  获取文件夹里所有文件信息
  11. get_folder_infor("c:\kai")
  12. function get_folder_infor(folder)
  13. dim fso,f,f1,n
  14. set fso=createobject("scripting,filesystemobject")
  15. set f=fso.getfolder(folder)
  16. set fc=f.files
  17. for each f1 in fc
  18. select case f1.name
  19. case"kai.mpg","she.mpg","dd.mp3"'//检查文件夹里是否含有这些文件
  20. end select
  21. next
  22. end function
复制代码


12   等待某个对象出现方法

  1. y=......waitproperty("visible",true,10000)
复制代码


13   防程序中断方法

  1. On error resume next
  2. On error goto handle
复制代码


14  数组的应用:

  1. name=array(1,2,"aa","bb")
  2. name(2)="aa"
复制代码


15  正则表达式应用模板

  1. 进行日期YYYY-MM-DD的格式检查 :
  2. Function RegExpTest(patrn, strng)
  3.   Dim regEx, Match, Matches      ' Create variable.
  4.   Set regEx = New RegExp         ' Create a regular expression.
  5.   regEx.Pattern = patrn         ' Set pattern.
  6.   regEx.IgnoreCase = True         ' Set case insensitivity.
  7.   regEx.Global = True         ' Set global applicability.
  8.   Set Matches = regEx.Execute(strng)   ' Execute search.
  9.   For Each Match in Matches      ' Iterate Matches collection.
  10.     RetStr = RetStr & "Match found at position "
  11.     RetStr = RetStr & Match.FirstIndex & ". Match Value is '"
  12.     RetStr = RetStr & Match.Value & "'." & vbCRLF
  13.   Next
  14.   RegExpTest = RetStr
  15. End Function
  16. date_pattern="^((((19|20)(([02468][048])|([13579][26]))-02-29))|((20[0-9][0-9])|(19[0-9][0-9]))-((((0[1-9])|(1[0-2]))-((0[1-9])|(1\d)|(2[0-8])))|((((0[13578])|(1[02]))-31)|(((01,3-9])|(1[0-2]))-(29|30)))))$"
  17. result_message=RegExpTest(date_pattern, inputbox("请你输入要检查的时间:"))'用其它正则表达式更改此处
  18. Select case result_message
  19. Case ""
  20.          msgbox("你输入的日期格式与标准不匹配")
  21. case else  MsgBox(result_message)
  22. end select
复制代码


16   返回一个字符串在另一字符串中的位置

  1. instr(string1,string2)
复制代码


17   有时回放出现找不到对象时,可能不是由于你的代码问题,而是由于你的操作系统等设置问题;

  1. 举例说明1:
  2. 比如:你录制一个选择磁盘中的文件动作
  3. 会录制为:
  4. .winlistview("  ").drap 46,99
  5. .winlistview("  ").draponitem "she.mp3"
  6. 下次录制的时候,如果你的系统文件改为不显示扩展名,下次执行的时候,QTP就找不到she.mp3,只能找到she;
  7. 举例说明2:
  8. 有时由于不同操作系统以及不同的ie,导致有些窗口不能识别,比如在2000下弹出的网页对话框的标题是:
  9. “web对话框",而在2003上是”网页对话框"
复制代码


18  "is+*"类型function

  1. isarray'是否是数组
  2. isconnected'判断QTP是否连接到TD
  3. isdate'是否是合法的日期类型
  4. isempty'判断是否初始化
  5. isNull'判断是否为空值
  6. isNumeric'判断是否是数字型
  7. isobject'判断是否一个功能对象
  8. isready'判断设备是否准备就绪
  9. isRootFolder'是否是根目录
复制代码


19 Action之间的参数传递

  1. 例如:在Action1中,有如下代码:
  2. out_str="This is out_string"
  3. RunAction "Action2",oneIteration,out_str
  4. 在Acton2中,在其step->Action Properties中的,input参数栏,加入out_str后,
  5. msgbox(parameter("out_str")),就能正确显示参数了 
复制代码


20 WScript.Shell的一些应用

  1. set WshShell =CreateObject("WScript.Shell")
  2. WshShell.SendKeys "{ENTER}"     '模拟键盘进行操作
  3. WshShell.AppActivate "Calculator"             '启动应用程序
复制代码


21  获取对象属性名称用法:

  1. GetRoProperty----从应用程序界面上获取对象属性(即,是脚本运行时,获取的对象动态属性值)
  2.            例如:获取对象库中index属性值,似乎只能用GetToProperty,因为应用程序界面上对象没有该属性,只是
  3.       QTP为识别该对象创立的描述属性;
  4. GetToproperty----从对象库中描述对象的属性,静态值
  5. GetToProperties----获取用于标识对象的属性集;对于这个集合,有count等属性方法
复制代码


22  FireEvent的使用
可以对一个对象进行更复杂的操作

  1. 如:FireEvent("onfocus")   '使一个控件获取焦点
  2.      FireEvent("ondblclick")  '实现双击/也可以在事件设定中针对该对象事件响应  
复制代码


23 模板的应用

  1. -----新建一个文本,输入一些新建Action时常包含的信息,然后保存为ActionTemplate.MST文件,
  2.  并复制到QTP/dat目录下;这样每次新建action都会包含固定的信息了;
  3. 例如:
  4. '-------------------脚本说明---------------
  5. '产品版本:      __Build(  )
  6. '测试员:
  7. '编写日期:
  8. '测试功能:
  9. '脚本类型:
  10. '被测试对象初始状态:
  11. '进展程度:
  12. '基本思路:
  13. '主要功能函数:
  14. '历史修改:
  15. '没解决的问题:
  16. '--------------------脚本内容-------------
复制代码


24 在对象库中,两个对象有时不能通过更改属性或命名来达到两个对象完全一致的替换;
在web-mod项目中,我在对象库里添加了一个自动含有index标识属性的对象,然后每次通过SetToproperty来改变
index值,对对象进行数据驱动,使其操作另一个对象,但脚本始终操作原先index属性值的对象;后来,把该对象
删除掉,重新添加一个不自动含有index标识属性的该类对象,然后,手工添加,index标识属性,后来脚本能正常 工作了,可见两次的对象属性完全一致,但形成方式不一样,导致的结果往往也不一样。

25 childobject的应用

  1. childobject可以返回界面上满足条件的对象集合,而且与对象库里是否有这些对象无关,这就可以简化对象库;
  2. 返回的对象集合的count方法可以返回对象个数,这就可以通过下标对单个对象进行操作;在出现index标识对象时
  3. 可以进行运用
  4. 如:Set m_WinCheck=Description.Create()
  5.       m_WinCheck("nativeclass").Value="Button"
  6.       set All_WinCheck=Window("").Dialog("").Childobject(m_WinCheck)
  7.       n=All_WinCheck.Count()
  8.      for i=0 to n-1
  9.       All_WinCheck(i).Set "ON"
  10.      next
复制代码

--以上是一些简单基础内容及我的经验心得,欢迎大家贴一些特色代码或具体应用的核心代码,谢谢!

[ 本帖最后由 walker1020 于 2006-8-30 20:32 编辑 ]
作者: lovetest6    时间: 2005-9-14 13:02
代码用code 修饰一下嘛。
作者: kai_top    时间: 2005-9-14 16:18
呵呵,不好意思,才看到发贴时有这功能,下次不会这样了,请版本删除此贴,嘿嘿
作者: lovetest6    时间: 2005-9-15 12:11
你自己也可以编辑的吧?
作者: kai_top    时间: 2005-9-16 09:28
啊,我真菜,呵呵,才发现还能自己编辑自己的贴子,嘻嘻,没仔细研究过,以后好了,谢斑竹提醒!
作者: hongtang    时间: 2005-9-16 23:24
标题: 不错
不过 你所说的 QTP自代的功能都能实现
可以查看一下HELP手册
作者: lin_lp    时间: 2005-12-21 15:26
正在找这些呢!谢了!
作者: drwei123    时间: 2005-12-23 15:23
好东西  就是有点晕
作者: 迷雾精灵    时间: 2005-12-23 15:27
感谢!!!刚好给了我一个启示.
作者: walker1020    时间: 2005-12-30 18:40
kai_top 谢谢你!你总结出了这么多,真的不容易
作者: BiSheng    时间: 2005-12-31 13:58
标题: 顶!
顶顶顶!
作者: tomzhang    时间: 2006-1-3 14:54
好东西!
作者: parisian    时间: 2006-1-4 15:26
看来是有用到日常工作中的哦,支持
作者: KirinGu    时间: 2006-1-5 15:23
标题: lz有心了。
不能不顶!!!
作者: testman    时间: 2006-2-10 15:25
好东东,不能不顶!
作者: mstiunicon    时间: 2006-2-16 17:28
建议置顶,时常翻阅,有助于解决脚本问题啊
作者: Horus_Ra    时间: 2006-2-17 11:20
最后一条我也碰到过,录制下来的属性不能运行,删除后手工添加一条一模一样的却可以……
作者: eightants    时间: 2006-2-21 03:17
标题: 添加一条代码...
26  Create Log File:

  1. Dim LOGFile, fso, MyFile

  2. LOGFile="C:\Log.txt"
  3. Set fso = CreateObject("Scripting.FileSystemObject")
  4.     If fso.FileExists(LOGFile) = False Then
  5.            Set MyFile = fso.CreateTextFile(LOGFile, True)
  6.            MyFile.Close
  7.     end if
  8. Set MyFile = fso.OpenTextFile(LOGFile, 8, True)
  9. MyFile.WriteLine("")
  10. MyFile.WriteLine(" " & Cstr(Now) & " ---------------------------------------------------------")
  11. MyFile.WriteLine("LOG Information!")
  12. MyFile.Close
复制代码

[ 本帖最后由 walker1020 于 2006-8-30 20:41 编辑 ]
作者: harold_zou    时间: 2006-3-22 11:33
收藏
作者: kai_top    时间: 2006-3-22 16:10
27 对于经常由于ghost系统,需要再次配置QTP参数,可以参考以下方法,写一个vbs,对QTP自动配置;
[attach]6229[/attach]

28  数据输入输出方法

  1. 数据输入输出的方法:
  2.   1  ExecuteFile"e:\kk.vbs"
  3.   2  Environment.LoadFromFile("e:\k.xml")
  4.   3  Datatable.ImportSheet/Import
  5.   4  GetData from DataBase
  6.   5  Datatable autofill
  7.   6  Action input/output
  8.   7  Use GetxxProperty to get data from Object
  9.   8  Use Some Function to Product data
复制代码

[ 本帖最后由 walker1020 于 2006-8-30 20:42 编辑 ]
作者: 我要做SQAD    时间: 2006-3-22 17:06
***********************************
randomize'更新反回的数据
function rand(k,n)
n=int((k-1)*rnd+1)
rand=n
end function
***********************************
rand多了一个n参数。哈哈
作者: 我要做SQAD    时间: 2006-3-22 17:52
On error goto handle?有这句语句吗?
作者: 我要做SQAD    时间: 2006-3-22 18:14
总得来说还不错,收下了。哈哈
作者: alexchen    时间: 2006-3-24 15:27
谢谢分享
作者: jennie98    时间: 2006-3-30 15:10
收藏,建议加精
作者: winder238    时间: 2006-3-30 22:14
一般
这些自己都能做
作者: 51it    时间: 2006-3-31 15:34
真历害啊。
作者: haven6    时间: 2006-4-6 11:21
斑竹的VBS学得8错啊
作者: angelwamy    时间: 2006-5-12 16:15
辛苦了,收藏。谢谢啊
作者: walker1020    时间: 2006-6-22 11:44
不错!不错!很有帮助! 就是少了第6条
作者: rickcui    时间: 2006-7-19 15:45
都是牛人啊!!!
作者: lbzhong    时间: 2006-8-15 16:41
对于这种好帖一定要 顶
作者: walker1020    时间: 2006-8-30 20:16
标题: 补充几点
29  插入同步等待某个对象出现
   
  
  1. Dim continue
  2.       continue = False

  3.     While not continue
  4.           wait(1)
  5.           continue = Window("航班预订").Exist
  6.     Wend
复制代码


30  异常控制
   
  
  1. If  Window("航班预订").Dialog("航班预订").Exist Then
  2.         Set myStatic = Description. Create()
  3.         myStatic("nativeclass").Value="Static"
  4.         Set myObject=Window("航班预订").Dialog("航班预订").ChildObjects(myStatic)
  5.         ErroInfo = myObject(0).GetRoProperty("text")
  6.         Reporter.ReportEvent micFail,"时间输入", ErroInfo
  7.         Window("航班预订").Dialog("航班预订").WinButton("确定").Click
  8.         ExitActionIteration

  9.   End If
复制代码

[ 本帖最后由 walker1020 于 2006-8-30 20:43 编辑 ]
作者: walker1020    时间: 2006-8-30 20:34
原帖由 我要做SQAD 于 2006-3-22 17:06 发表
***********************************
randomize'更新反回的数据
function rand(k,n)
n=int((k-1)*rnd+1)
rand=n
end function
***********************************
rand多了一个n参数。哈哈


楼主的帖子中的错误已修改。谢谢 我要做SQAD!
作者: liuliu022004    时间: 2006-8-31 10:15
谢谢,收下慢慢学习,不会VB:(
作者: walker1020    时间: 2006-8-31 14:31
原帖由 liuliu022004 于 2006-8-31 10:15 发表
谢谢,收下慢慢学习,不会VB:(


下面的链接有 VBscript教程的下载:http://bbs.51testing.com/thread-11556-1-1.html
你下载下来后 可以慢慢研究。
作者: joetree    时间: 2006-9-21 11:27
原帖由 我要做SQAD 于 2006-3-22 17:52 发表
On error goto handle?有这句语句吗?



有呀
是说遇到系统捕获的错误跳转到handle
作者: leisss    时间: 2006-10-30 16:28
绝对好贴,谢谢楼主了
作者: nxlyl    时间: 2006-11-6 15:34
确实对新手来说非常有用,对我帮助很大。
作者: zjsjx    时间: 2006-11-10 17:27
真的很好,谢谢!楼主,你辛苦了!!!
作者: flychen    时间: 2006-12-27 17:48
多谢楼主了,很有用的东西sdlkfj2
作者: suifengpiao    时间: 2007-2-10 13:17
此帖不回,没有天理
作者: SueR    时间: 2007-2-16 03:12
虽然看起来好累,但还是看完了,谢啦~~
作者: handle    时间: 2007-4-8 22:08
都 高人呀
作者: 厍仕杰    时间: 2007-4-14 18:10
非常谢谢
作者: jackydao    时间: 2007-4-16 16:44
好贴得顶,收下来研究
作者: 圣西罗    时间: 2007-5-15 11:10
标题: 刚开始学习等一下
刚开始学习等一下
作者: leoluo    时间: 2007-5-15 14:55
很好的学习帖子,收场了
作者: leojava    时间: 2007-5-19 09:22
刚开始学习,应该有用,回一下
作者: premiumdue    时间: 2007-5-29 15:46
标题: 回复 #1 kai_top 的帖子
老实说_________我真的看不懂!!!!
作者: 蓝调    时间: 2007-5-30 16:15
这个可以好好看看!感谢楼主
作者: yesman    时间: 2007-5-31 14:57
标题: 好东西!
好东西,谢谢楼主啊,可惜我不会vbs,慢慢学习吧~~
作者: okokokk    时间: 2007-6-19 17:25
对新手的帮助太大了,支持你
作者: sidexm    时间: 2007-6-27 11:51
Very helpful thanks!
作者: 紫慕    时间: 2007-7-5 17:46
ding
作者: zemperor    时间: 2007-7-24 14:54
无私万岁!!
作者: zemperor    时间: 2007-7-24 14:55
谢谢斑竹分享sdlkfj3
作者: zemperor    时间: 2007-7-24 14:55
好象看不懂啊
作者: syang0517    时间: 2007-7-24 15:30
学习了
感谢各位了!
作者: zm_027    时间: 2007-7-24 20:53
支持一下,谢谢分享
作者: zm_027    时间: 2007-7-24 20:54
支持一下,谢谢分享
作者: 看雪时节    时间: 2007-8-28 17:11
不错啊!收藏先
作者: luckystarpgq    时间: 2007-8-29 16:50
顶,好代码大家学习,sdlkfj3
作者: dannytest    时间: 2007-9-5 11:31
不错  好东西      值得一看
作者: zihua    时间: 2007-9-24 09:53
总结的真好,谢谢搂住
作者: hairet    时间: 2007-10-5 16:41
基础实用,收藏先,谢谢噢!
作者: mystufo    时间: 2007-10-11 10:59
最近在学习QTP,非常感谢
作者: xiasan2004    时间: 2007-10-30 14:38
呵呵,知道一点,但是还不是很清楚啊
好好研究一下
作者: wyqwyq    时间: 2007-10-30 16:39
TKX
作者: coralsong_1982    时间: 2007-10-31 17:39
写的不错,真的实用
作者: three116    时间: 2007-11-1 20:36
东西不错呵呵
作者: caodongjian    时间: 2007-11-9 17:10
.........
作者: three116    时间: 2007-11-13 10:44
又学到东西了
作者: yeziqingqing    时间: 2007-11-14 17:02
刚开始学QTP,无从下手,感谢搂主提供的资料!
作者: mfjin    时间: 2007-12-3 11:20
东西不错
作者: 板砖    时间: 2007-12-3 12:08
支持!
作者: scorix    时间: 2007-12-9 13:32
看了前面几句,以为是讨论VBS代码,结果发现不是。。。
作者: pqpql    时间: 2008-1-9 15:30
 
真好,对我很有帮助,谢谢楼主,辛苦了!
作者: yeziqingqing    时间: 2008-1-11 15:03
这些代码有利于初学者学习,学QTP有一段时间了还是不能自己用代码去实现!继续努力了!多谢楼主了!
作者: gggwavj    时间: 2008-1-31 17:38
写得不错,楼主太强了
作者: span    时间: 2008-2-26 18:02
顶你个贴
作者: FLY000    时间: 2008-5-21 16:41
太好了,希望大家一直补充
作者: alexguo    时间: 2008-5-22 16:46
不错的代码,谢谢
作者: tinafrog    时间: 2008-7-29 08:46
感谢各位同胞的无私奉献,好帖就要不分时段的顶起来, 收藏了
作者: z93620104    时间: 2008-9-27 16:03
感谢

学习
作者: sunzhenguo1010    时间: 2008-10-3 21:51
谢谢无私奉献的楼主!
作者: Empemp    时间: 2008-12-3 11:44
thx
作者: archer2002    时间: 2009-1-18 09:38
好东西,非常感谢!
作者: 289113974    时间: 2009-2-5 15:10
好东西一定耀顶
作者: paulyang    时间: 2009-2-15 13:27
标题: 回复 1# 的帖子
高手就是不同,经验丰富。对我帮助真大。万分感谢!
作者: 胡奇    时间: 2009-2-23 11:40
谢谢lz。正在找呢
作者: wd_13698    时间: 2009-2-26 20:53
ding./
作者: lvicer    时间: 2009-3-1 12:38
QTP
作者: timfung    时间: 2009-4-23 17:15

作者: hugh007    时间: 2009-6-23 10:34
好东西  支持一下1
作者: shiqing24    时间: 2009-7-29 14:58
勾起了我一丝丝的回忆
作者: lyl419    时间: 2009-7-30 13:35
有自知之明就好
作者: linda02046    时间: 2009-8-7 15:40
正好对于VBScript的学习无从下手呢,楼主的基础总结正好为我指引了方向,多谢!
作者: voyix    时间: 2009-8-20 18:10
真不错呢,很有帮助,谢谢楼主了
作者: vomi    时间: 2009-10-17 00:24
强啊 。。。那么多啊。。。。




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