-
小结datatable的使用
2008-10-24 10:33:25
1)获得datatable的行数
rowcount = DataTable.GetSheet("Global ").GetrowCount
2)获得datatable的列数
paramcount = DataTable.GetSheet("Global ").GetParameterCount
3)取得datatable的某一行
datatable.setcurrentrow(RowNumber)
4) 取得datatable的下一行
DataTable.GetSheet("Global ").SetNextRow
5)获得当前行数
datatable.getcurrentrow
6)获得datatable的各列列名
DataTable.GetSheet("Global").GetParameter(ColNumber).name
7)获得datatable某列的值
DataTable(ColNumber,Global)
-
QTP关于文件的操作
2008-10-24 09:31:22
转一篇文章
创建文件
dim fso, f
set fso = server.CreateObject("scrīpting.FileSystemObject")
set f = fso.CreateTextFile("C:\test.txt", true) '第二个参数表示目标文件存在时是否覆盖
f.Write("写入内容")
f.WriteLine("写入内容并换行")
f.WriteBlankLines(3) '写入三个空白行(相当于在文本编辑器中按三次回车)
f.Close()
set f = nothing
set fso = nothing
打开并读文件
dim fso, f
set fso = server.CreateObject("scrīpting.FileSystemObject")
set f = fso.OpenTextFile("C:\test.txt", 1, false) '第二个参数 1 表示只读打开,第三个参数表示目标文件不存在时是否创建
f.Skip(3) '将当前位置向后移三个字符
f.SkipLine() '将当前位置移动到下一行的第一个字符,注意:无参数
response.Write f.Read(3) '从当前位置向后读取三个字符,并将当前位置向后移三个字符
response.Write f.ReadLine() '从当前位置向后读取直到遇到换行符(不读取换行符),并将当前位置移动到下一行的第一个字符,注意:无参数
response.Write f.ReadAll() '从当前位置向后读取,直到文件结束,并将当前位置移动到文件的最后
if f.atEndOfLine then
response.Write("一行的结尾!")
end if
if f.atEndOfStream then
response.Write("文件的结尾!")
end if
f.Close()
set f = nothing
set fso = nothing
打开并写文件
dim fso, f
set fso = server.CreateObject("scrīpting.FileSystemObject")
set f = fso.OpenTextFile("C:\test.txt", 2, false) '第二个参数 2 表示重写,如果是 8 表示追加
f.Write("写入内容")
f.WriteLine("写入内容并换行")
f.WriteBlankLines(3) '写入三个空白行(相当于在文本编辑器中按三次回车)
f.Close()
set f = nothing
set fso = nothing
判断文件是否存在
dim fso
set fso = server.CreateObject("scrīpting.FileSystemObject")
if fso.FileExists("C:\test.txt") then
response.Write("目标文件存在")
else
response.Write("目标文件不存在")
end if
set fso = nothing
移动文件
dim fso
set fso = server.CreateObject("scrīpting.FileSystemObject")
call fso.MoveFile("C:\test.txt", "D:\test111.txt") '两个参数的文件名部分可以不同
set fso = nothing
复制文件
dim fso
set fso = server.CreateObject("scrīpting.FileSystemObject")
call fso.CopyFile("C:\test.txt", "D:\test111.txt") '两个参数的文件名部分可以不同
set fso = nothing
删除文件
dim fso
set fso = server.CreateObject("scrīpting.FileSystemObject")
fso.DeleteFile("C:\test.txt")
set fso = nothing
创建文件夹
dim fso
set fso = server.CreateObject("scrīpting.FileSystemObject")
fso.CreateFolder("C:\test") '目标文件夹的父文件夹必须存在
set fso = nothing
判断文件夹是否存在
dim fso
set fso = server.CreateObject("scrīpting.FileSystemObject")
if fso.FolderExists("C:\Windows") then
response.Write("目标文件夹存在")
else
response.Write("目标文件夹不存在")
end if
set fso = nothing
删除文件夹
dim fso
set fso = server.CreateObject("scrīpting.FileSystemObject")
fso.DeleteFolder("C:\test") '文件夹不必为空
set fso = nothing -
QTP:按住ctrl进行多选的问题
2008-07-23 13:18:40
昨天遇到一个问题,在我们测试的网站上有个功能:按住ctrl键可以选择页面里的多张图片
起初录制了脚本,但是在回放过程中,QTP似乎没有进行按住ctrl的操作,这样,先前选择的4张图片变成了每张各自被选择了,没有达到多选的效果。通过网友的帮助,找到了解决的办法,和大家分享一下,也希望能启发有类似疑惑的朋友。顺便感谢那两位给我帮助的朋友!
QTP中包含了Mercury.DeviceReplay对象,可以模拟鼠标单击和移动,还有键盘输入等操作。在调用DeviceReplay对象的方法之前,需要首先创建DeviceReplay对象:Set deviceReplay = CreateObject( "Mercury.DeviceReplay" )。DeviceReplay对象包含很多有用的方法,大家可以参考相关文档,我这里用到了KeyDown方法和KeyUp方法。KeyDown方法模拟一个按键的按下并保持(相当于Win32的KEY_DOWN事件)。KeyUp方法模拟通过键盘释放某个按下的按键。贴上一段脚本供大家参考:
Browser("LOGIN").Page("LOGIN").Frame("main").WebEdit("loginId").Set "11"
Browser("LOGIN").Page("LOGIN").Frame("main").WebEdit("password").SetSecure "48868cec12e855ab2f943f8814b33f40"
Browser("LOGIN").Page("LOGIN").Frame("main").Image("LOGIN").Click 35,6
Browser("LOGIN").Page("IMAGE WORKS").Sync
Window("安全").Click 115,285
Const VK_CONTROL = 29
Set deviceReplay = CreateObject( "Mercury.DeviceReplay" )
deviceReplay.KeyDown VK_CONTROL
wait(5)
Browser("LOGIN").Page("IMAGE WORKS").Frame("appletfile").WinObject("SunAwtCanvas").Click 94,105
wait(2)
Browser("LOGIN").Page("IMAGE WORKS").Frame("appletfile").WinObject("SunAwtCanvas").Click 210,83
wait(2)
Browser("LOGIN").Page("IMAGE WORKS").Frame("appletfile").WinObject("SunAwtCanvas").Click 359,101
wait(2)
Browser("LOGIN").Page("IMAGE WORKS").Frame("appletfile").WinObject("SunAwtCanvas").Click 517,102
wait(2)
deviceReplay.KeyUp VK_CONTROL
Browser("LOGIN").Page("IMAGE WORKS").Frame("header").Image("LOGOUT").Click
Browser("LOGIN").Page("LOGIN_2").SyncBrowser("LOGIN").Close
以上脚本是登陆一个web系统,通过ctrl选择4张图片,然后注销用户的过程。
-
QTP创建数据库检查点遇到的问题
2008-06-30 15:11:26
前两天尝试QTP数据库检查点,现在有些问题,请有经验的同行给指点一下,谢谢
首先我录制了一段脚本,主要是登陆系统,然后添加用户(包括新的用户名,密码,用户类型等)。录制以后,添加了一个数据库检查点,检查新添加的数据。建立数据库检查点的过程如下(以172.25.65.118为例):
1)录制脚本:登陆系统,录入一条数据(loginid是主键),loginid='1234567',password='pass123',passwordagain='pass123'
2)插入数据库检查点:[Insert] -〉[CheckPoint] -〉[Database CheckPoint]
3)选择“Specify SQL statement manually”-〉Next
Connecting string:
Provider=SQLOLEDB;Data Source=172.25.65.118;
Initial Catalog=NTTDB_TEST;User ID=sa;Password=sa;
4)SQL Statement:
Select * from nttuser where loginid='1234567'
之后,我把loginid,password,passwordagain参数话,模拟录入不同数据的过程。loginid参数话的参数名称是txtName
现在的问题是,参数话录入数据后,我应该如何建立数据库检查点?很显然,现在“Select * from nttuser where loginid='1234567'”已经不适用了。我尝试把这个SQL语句改成带变量的形式:Select * from nttuser where loginid=' "&txtName" '。总是提示:the checkpoint could not be created because the query returned an empty result set.请高手指点一下,象这种情况应该怎么创建数据库检查点呢?
-
QTP参数化
2008-06-17 16:10:54
刚刚开始自学QTP,好多功能我不知道应该什么时候使用。我把自己弄懂的一点点发上来,希望得到大家的指点,互相进步。
今天主要学习了参数化
实现的功能是:通过参数化,模拟不同用户登陆公司的ISSUE TRACKER 系统
步骤:
1)录制一个用户登陆ISSUE TRACKER 系统的脚本
2)把用户名和密码参数化
3)执行脚本,察看执行结果
脚本如下
Browser("项目跟踪系统-用户登陆").Page("项目跟踪系统-用户登陆").WebEdit("txtUsername").Set DataTable("txtUsername", dtGlobalSheet)
Browser("项目跟踪系统-用户登陆").Page("项目跟踪系统-用户登陆").WebEdit("txtPassword").SetSecure DataTable("txtPassword", dtGlobalSheet)
Browser("项目跟踪系统-用户登陆").Page("项目跟踪系统-用户登陆").WebButton("登录").Click
Browser("项目跟踪系统-用户登陆").Page("项目总括").Sync
Browser("项目跟踪系统-用户登陆").Page("项目总括").Check CheckPoint("200[0-9]-[0-1][0-9]-17")
Browser("项目跟踪系统-用户登陆").Close使用万用字符表示法,添加了一个对日期格式的检查点
-
纪念开通日志
2008-06-04 09:00:53
测试做了一年多了,几乎还是在操作的程度,今天,我觉得应该开始思考了。开个日志,也算是对自己工作的监督吧。在这块园地里,希望能和大家一起,不断进步!