51Testing软件测试论坛

标题: QTP学习分享(更新20070728) [打印本页]

作者: 风过无息    时间: 2007-5-9 16:15
标题: QTP学习分享(更新20070728)
1.在测试中我们使用QTP调试脚本的时候一般就是DEBUG或者MSGBOX察看一些信息,其实有时候也可以使用print来实现批量的察看信息但是不影响程序运行.
运行脚本:
  1. a="100"
  2. print a
复制代码

~~~~~~~~~~~~~~~~~~~~~~~~~
2.取datatable特定行的数据可以这样使用
运行脚本:
  1. DataTable.GetSheet("Action1").GetParameter("test").ValueByRow(4)
复制代码

~~~~~~~~~~~~~~~~~~
3.Wait Seconds [, Milliseconds]可以精确到毫秒.
~~~~~~~~~~~~~~~~~~
4.在自定义的function里面数组作为返回值.
运行脚本:
  1. circuit = "399937"
  2. Function trimString(circuit)
  3. Dim holdArray(5)
  4. holdArray(0) = Left(circuit, 2)
  5. holdArray(1) = Right(circuit, 2)
  6. msgbox holdArray(0) 'showed 39
  7. trimString = holdArray' I get an out of range error here
  8. End Function
  9. dim myArray
  10. 'here I want to assign the return array to another array
  11. myArray = trimString(circuit)
  12. ' and then call one element from it
  13. msgbox myArray(1)
复制代码

~~~~~~~~~~~~~~~
5.计算一个操作的时间.
运行脚本:
  1. Browser("Browser").Page("Page").Image("getRates").Click
  2. var_StartTime = Timer
  3. Browser("Browser").Page("Page").Sync
  4. Browser("Browser").Page("Page").Check CheckPoint("Check1")
  5. var_EndTime = Timer
  6. intRespTime = round ((var_EndTime - var_StartTime), 2 )
  7. msgbox (intRespTime)
复制代码

~~~~~~~~~~~~~~~
6.取得指定sheet(datatable)的行数和列数(也可以理解为参数个数)
  1. paramcount = DataTable.GetSheet("Action1").GetParameterCount
  2. msgbox "There are " &paramcount&"columns in the data sheet."
  3. rowcount = DataTable.GetSheet("Action1").GetRowCount
  4. msgbox "There are " &rowcount&"rows in the data sheet."
复制代码

~~~~~~~~~~
7.一种设置全局变量的方法GlobalDictionary
'Part 1.
'***********************************************************************************************************
  1. Dim WshShell
  2. Set WshShell =CreateObject("WScript.Shell")
  3. WshShell.RegWrite "HKCU\Software\Mercury Interactive\QuickTest Professional\MicTest\ReservedObjects\GlobalDictionary\ProgID", "Scripting.Dictionary","REG_SZ"
  4. Set WshShell = Nothing
复制代码

'*********************************************************************************************************************
'Part 2.
'*****************************************************************************************
  1. GlobalDictionary.Add "ParamName", "ParamValue"
  2. Msgbox GlobalDictionary.Item("ParamName")
  3. GlobalDictionary.Item("ParamName")="***********"
  4. Msgbox GlobalDictionary.Item("ParamName")
  5. Msgbox GlobalDictionary.Exists("ParamName")
  6. GlobalDictionary.Remove("ParamName")
  7. Msgbox GlobalDictionary.Exists("ParamName")
复制代码

'*********************************************************************************************
~~~~~~~~~~~
8.关掉多余的IE窗口
  1. SystemUtil.CloseProcessByWndTitle "51testing", True
复制代码

~~~~~~~~~~~~~~~~~~
9.Execute 的用法,这个用法在一些特殊时候很有用的.
  1. x="4"
  2. Execute "Dim A_" & x
  3. Execute "A_" & x &"=99"
  4. Msgbox Eval("A_" & x)  
  5. ~~~~~~~~~~~~~~~~~~~
复制代码

10.GetLastError的介绍,看字面就是取运行最后一个错误
  1. x = GetLastError
  2. msgbox(DescribeResult(x))
复制代码

这样可以在程序里面判断程序运行时候是否出错了.
~~~~~~~~~~~~~~~~~
11.把weblist抓图下来

  1. Setting.WebPackage("ReplayType") = 2 'Default is 1
  2. Browser(".").Page(".").WebList(".").Click
  3. Desktop.CaptureBitmap "C:\Test.bmp",True
  4. Setting.WebPackage("ReplayType") = 1
复制代码

~~~~~~~~~~~~~~~~~~~~~~~~~~
12.Reporter.ReportEvent的新用法
transNumber = 12345
  1. Reporter.ReportEvent micPass, "TransactionNumber", "<DIV style='font-size: 7pt; color: white'>&</DIV>"&"<B> <FONT COLOR=#000000>"&transNumber&"</FONT></B>"
  2. Reporter.ReportEvent micPass, "TransactionNumber", "<DIV style='font-size: 7pt; color: white'>&</DIV>"&"<B> <FONT COLOR=red>"&transNumber&"</FONT></B>"
复制代码

~~~~~~~~~~~~~~~~~~~~~~~~~~
13.For循环中step的用法
  1. For K = 1 To 10 step 2
  2.           msgbox k
  3. Next
复制代码

~~~~~~~~~~~~~~~~~~~~~~~
14.Option Explicit,大家都知道VB Script里面是可以不申明变量直接使用,但是有时候我们为了脚本的规范,尽量申明使用的变量,这样你就用一下Option Explicit吧.
  1. Option Explicit   ' Force explicit variable declaration.
  2. Dim MyVar   ' Declare variable.
  3. MyInt = 10   ' Undeclared variable generates error.
  4. MyVar = 10   ' Declared variable does not generate error.
复制代码


~~~~~~~~~~~~~~~~~~~~~~~
14.从TXT文件里面读取特定行的数据.
  1. Dim fso, myfile,msg
  2. Set fso=CreateObject("scripting.FileSystemObject")   
  3. Set myfile = fso.openTextFile("C:\login.txt",1,false)
  4. '这里设置一个循环看需要读取第几行
  5. for i=1 to 10
  6. myfile.SkipLine
  7. next
  8. msg=myfile.ReadLine
  9. myfile.close
复制代码


~~~~~~~~~~~~~~~~~~~~~~~

[ 本帖最后由 风过无息 于 2007-7-29 14:22 编辑 ]
作者: eramyang    时间: 2007-5-9 16:22
GetParameter("test")中的test是那里来的?
作者: 风过无息    时间: 2007-5-9 16:36
是我参数的名字

[ 本帖最后由 风过无息 于 2007-5-9 16:42 编辑 ]
作者: higkoo    时间: 2007-5-9 21:36
标题: 有点开发的感觉
有点在做开发的感觉,有没实际一点的例子?sdlkfj3
作者: mldyt0229    时间: 2007-5-10 09:39
标题: 回复
在测试中我们使用QTP调试脚本的时候一般就是DEBUG或者MSGBOX察看一些信息,其实有时候也可以使用print来实现批量的察看信息但是不影响程序运行.
=======================================================
在帮助中没有找到这个对象或者是函数,而且具体怎么用有没有例子呢?
作者: alex_82712    时间: 2007-5-10 09:45
学习了。
Thanks for LZ
作者: 风过无息    时间: 2007-5-11 14:48
你随便定义一些需要显示的数据就好了.
i=100
msg="hello"
print i
print msg

在9.0的帮助里面有关于print的介绍.
作者: htot05    时间: 2007-5-11 15:02
不错,msgbox的特点就在与暂停脚本运行和输出结果只能当时看,再想看就得重新运行,如果用Print的话,在一些条件下会比msgbox方便一些,好办法~~!!
作者: dawee    时间: 2007-5-12 13:12
原帖由 风过无息 于 2007-5-11 14:48 发表
你随便定义一些需要显示的数据就好了.
i=100
msg="hello"
print i
print msg

在9.0的帮助里面有关于print的介绍.



1.print方法只适用于 9.0以上版本还是?是属于QTP里面的方法还是VBS的方法?
2.print 以后的信息到哪里去了呢?是有个默认的文件保存还是?
   如果想把print方法后获取的信息 输入到特定的文件,可否实现?如何实现?thanks
作者: 风过无息    时间: 2007-5-13 11:21
楼上的你可以自己把脚本运行一下就知道了
作者: walker1020    时间: 2007-5-13 11:46
楼主经过一段时间的学习后,把自己的收获总结了出来,还无私地奉献了出来,值得学习!谢谢 风过无息!
作者: 风过无息    时间: 2007-5-14 18:27
谢谢斑竹的鼓励.
作者: rivermen    时间: 2007-5-15 10:18
8.2里面没有print,那还有类似的方法吗?
作者: 风过无息    时间: 2007-5-15 11:01
你试过了吗?
作者: chenjie021    时间: 2007-5-15 14:19
谢谢,楼主的总结
作者: denisye    时间: 2007-5-15 22:08
谢谢楼主的总结,以前只知道用msgbox,今天学会了print这个好东东sdlkfj3
作者: Sophie.zhang.cs    时间: 2007-5-16 13:55
弱弱的问一句,应该怎么运行这些语句阿?是在qtp直接运行吗?那不是要有一个url的吗 ?
作者: 风过无息    时间: 2007-5-17 14:47
新增一种设置全局变量的方法GlobalDictionary
作者: rivermen    时间: 2007-5-17 16:32
我的8.2版本找不到 print
[attach]25570[/attach]
作者: hxf    时间: 2007-5-18 16:30
8。2不支持print这个方法
作者: stone821021    时间: 2007-5-18 16:52
我都是用reporter的.print 在8.2里不行!sdlkfj5
作者: yuandjing    时间: 2007-5-22 17:05
楼主数个高手
全局变量也可以用环境变量实现,功能是一样的
作者: zhaojie    时间: 2007-5-23 15:51
呵呵
作者: brianq    时间: 2007-5-24 14:34
学一学!
作者: dionysus    时间: 2007-5-28 23:10
Print是个不错的方法!
查了一下帮助 services.LogMessage() 这个方法可以往QTP的Test Results里面写报告,作用类似
作者: 风过无息    时间: 2007-5-29 10:12
楼上说的方法和Reporter.ReportEvent类似啊,不过又多了一个输出信息的方法了.
作者: sunqiang1024    时间: 2007-6-5 16:45
谢谢楼主分享啊,呵呵
作者: fwind1    时间: 2007-6-5 19:03
<strong>不错</strong>
作者: jimmy2006.hi    时间: 2007-6-6 09:50
受益非浅,楼住加油~sdlkfj2
作者: flyfly310    时间: 2007-6-6 15:16
2 datatable某行的值获取 (补充方法)
  datatable.setcurrentrow(row)
  a=datatable.rawvalue("column name","sheet name")
eg:
   datatable.setcurrentrow(4)……设置当前行为第四行
   a=datatable.rawvalue("test","action1")……获取action1sheet的test列的行值
作者: newideaway    时间: 2007-6-7 17:45
标题: 回复 #30 flyfly310 的帖子
sdlkfj6
作者: 风过无息    时间: 2007-6-8 22:12
标题: 更新纪录20070608
增加GetLastError
作者: 5555    时间: 2007-6-9 21:22
ddddddddddddd
作者: topor    时间: 2007-6-11 15:56
又学到新东东了~~~~sdlkfj3
作者: walker1020    时间: 2007-6-13 09:45
风过无息 有心了,谢谢你!我把它移动到 [QTP精华区] 了
作者: kkrt20032003    时间: 2007-6-15 13:21
lz 学得不错啊。  学习ing!!sdlkfj2
作者: kitteylnm    时间: 2007-6-27 14:55
标题: 学习ing
感谢楼主
作者: kitteylnm    时间: 2007-6-27 14:55
标题: 学习ing
学习ing


感谢楼主
作者: 风过无息    时间: 2007-7-7 10:38
更新纪录20070707
增加Reporter.ReportEvent的新用法
作者: mjji23    时间: 2007-7-10 11:21
xiexie
作者: 风过无息    时间: 2007-7-13 09:58
增加了for循环中的step的用法,20070713
作者: 风过无息    时间: 2007-7-28 18:41
增加Option Explicit ,20070728
作者: 风过无息    时间: 2007-7-29 14:23
更新纪录20070729
从TXT文件里面读取特定行的数据
作者: 飞天侠    时间: 2007-8-5 16:02
不错呀
作者: yueyang    时间: 2007-9-11 17:46
有点vb的味道。不错
作者: walker1020    时间: 2007-9-11 22:20
原帖由 higkoo 于 2007-5-9 21:36 发表
有点在做开发的感觉,有没实际一点的例子?sdlkfj3


开发QTP的脚本也是开发工作呀。
作者: ucandie    时间: 2007-10-6 18:06
标题: 挣分
学习一下
作者: pxwcypx    时间: 2007-10-26 16:32
有收获
作者: alextowxm    时间: 2007-10-29 15:49
挺有总结性的 '
要在没有事的时候 试一试
作者: alextowxm    时间: 2007-10-29 15:56
在用print 的时候 是有一个窗口记录的信息


什么还是自己试试才能明白
大家要勤动手才可以呀

作者: alextowxm    时间: 2007-10-29 16:19
为什么我在添加语句 想查询 datatable 中的 数据的时候 不能成功
所 添加的 语句为
Dim b
b=DataTable.GetSheet("Action1").GetParameter("from").ValueByRow(1)  ' 我的数据的 列名为from  
msgbox b   ' 这个是我想查看如何 查询出来的值
作者: 风过无息    时间: 2007-10-30 14:03
楼上QTP版本多少?
作者: qq1980    时间: 2007-11-1 10:58
喜欢大家的笔记和经验总结,少让人走弯路!谢谢大家的分享!(感激中)
不过还是无法下载去学习!(郁闷中)
为了所谓的“积分”而留言(虚伪中)
作者: qq1980    时间: 2007-11-1 11:01
好帖子
收到我的QTP的学习笔记中
谢谢!
作者: athenalich    时间: 2007-12-3 20:32
感谢楼主,支持支持
作者: bdwang    时间: 2008-3-13 16:21
谢谢!
作者: yqx    时间: 2008-4-14 10:14
用print来调试查看qtp脚本确实蛮好用的,thanks
作者: Simatu    时间: 2008-4-15 15:24
用了Report.ReportEvent方法来验证,通过,谢谢斑竹分享~
作者: wd_13698    时间: 2009-2-26 20:41
不错。赞个。
作者: timfung    时间: 2009-4-23 15:33

作者: lyl419    时间: 2009-6-17 12:39
谁有QTP9.0以上的版本咯
作者: lyl419    时间: 2009-6-17 12:41
谁有QTP9.0以上的安装版本咯
请提供一个网址,多谢
作者: gycll    时间: 2009-9-14 13:50
标题: 谢谢分享
谢谢楼主的分享
作者: huxian200    时间: 2009-10-28 14:14
222333
作者: huxian200    时间: 2009-10-28 14:15
22233344
作者: greenbai    时间: 2010-3-9 21:55
新手入门。。支持
作者: leia    时间: 2010-3-13 14:49
谢谢分享
try!
作者: lisaswing    时间: 2010-3-17 17:22
新手来学习
作者: 恋上一支鱼    时间: 2010-3-30 22:51
顶起来
作者: tlu_jj    时间: 2010-11-24 10:24
谢谢,楼主分享!!向楼主学习
作者: zhoward    时间: 2011-2-16 17:04
我在qtp10试了print,运行时提示类型有误,是10.0不支持么???
作者: wsq8413    时间: 2011-6-7 17:25
回复 2# eramyang

“test”是参数列名
作者: ohuihuio    时间: 2011-8-19 09:42
很好,很强大!
作者: iamselma    时间: 2011-8-24 11:11
学习了。。。。谢谢楼主
作者: 吉鲤    时间: 2011-9-17 18:04
先收集着,慢慢消化,谢谢.
作者: l_ll    时间: 2012-4-12 14:11
谢谢楼主分享
作者: muyunsihe    时间: 2012-4-13 15:54
好东西啊,顶
作者: flymouse119    时间: 2012-4-24 14:58
写的不错,简单易懂,对新手有帮助
作者: 邱建忠    时间: 2012-8-25 22:17
适合初学者 MARK
作者: wzxwumike    时间: 2013-12-2 18:02
朱老师的帖,必须顶!!!!
作者: 邱建忠    时间: 2013-12-3 12:55
前排现在都是大侠了。。。。。。。。。。。
作者: 邱建忠    时间: 2013-12-3 13:00
应该加精的帖子。。。。!
作者: cool520    时间: 2015-9-22 16:23
rivermen 发表于 2007-5-17 16:32
我的8.2版本找不到 print

QTP10.0运行没问题的




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