UFT代码片段整理(1)

原创
2016/07/03 12:32
阅读数 412

1.手工参数化


Browser("百度一下,你就知道").Page("百度一下,你就知道").WebEdit("wd").Set DataTable("searchContent",dtGlobalSheet)

For i=1 to Datatable.GetRowCount    
Dialog("Login").WinEdit("Agent Name:").Set DataTable("username", dtGlobalSheet)
Dialog("Login").WinEdit("Password:").Set DataTable("passwd", dtGlobalSheet)
Dialog("Login").WinButton("OK").Click
datatable.GlobalSheet.SetNextRow 
Next

MsgBox "提示信息:"&vbCrLf&"操作成功",vbInformation,"Title"

2.在介绍对象库前首先要说一下QTP自动化的原理

(1).封装被测对象到对象库

(2).对比对象库里的对象属性和运行时的真实被测对象的属性

(3).对比一致后找到相应的对象


3.手动添加对象


Resources-->Object Repository-->Object -->Add Objects to Local


4.创建保留对象的会话实例


mercury.externObj  ----  用于创建EXTERN对象 

'#######启动浏览器######## 
systemutil.Run "iexplore.exe" 

'#######创建API  extern对象########## 
Set myExtern = createobject("mercury.externObj") 
myExtern.Declare micHWnd, "GetForegroundWindow", "user32.dll", "GetForegroundWindow" 

'######使用WIN32 API获取窗口的句柄###### 
hwnd = myExtern.GetForegroundWindow() 

'########通过获取的句柄控制浏览器窗口并跳转百度##### 
Browser("hwnd:=" & hwnd).Navigate "http://www.baidu.com"

'############释放对象实例######## 
Set myExtern = nothing
 


5.获取mercury.externObj值


进入到HKEY_CURRENT_USER\SOFTWARE\MERCURY INTERACTIVE\QUICKTEST PROFESSIONAL\MICTEST\RESERVEDOBJECTS\EXTERN下的PROGID

例1:获取单元格中的值
thisText = Browser(…).Page(…).Frame.(…).WebTable("sample").GetCellData(2,1)
例2:获取图片的名称
ObjectName = Browser(…).Page(…).Image("Find").GetProperty("Name")
例3:检查某个对象是否存在,如果存在弹出对话框说明对象存在。
If Browser("Browser").Page("Page").Applet("login.html").JavaEdit("username").Exist Then
MsgBox("The object exists.")
End if


仅有一个页面时的关闭方法:Window("Text:=Yahoo! - Microsoft Internet Explorer").Close
有多个页面时的关闭方法:
Dim i
i = 0
while (Window("Text:=Yahoo! - Microsoft Internet Explorer", "index:="&i).exist)
Window("Text:=Yahoo! - Microsoft Internet Explorer", "index:="&i).close
i = i +1
wend

以下语句指定 Mercury Tours 页面中名为author且索引值为 3 的 WebEdit 测试对象。当测试运行时,QTP 将查找具有匹配属性值的 WebEdit 对象,并输入文本jojo。
Browser("Mercury Tours").Page("Title:=Mercury Tours").WebEdit("Name:=Author", "Index:=3").Set "jojo" 


此外,如果我们希望在在一个测试或组件中多次使用相同的Descriptive Programming,则可以将创建的对象赋值给变量,这样使用会方便很多。
例如:我们需要完成下面一系列操作
Window("Text:=HyperSna").WinButton("Caption:=日期").Click
Window("Text:=HyperSna").WinButton("Caption:=时间").Click
Window("Text:=HyperSna").WinButton("Caption:=确定").Click
那么,为了方便其见,我们可以将Window("Text:=HyperSna")赋值到一个变量,然后再使用,参见下面的代码:
Set WinHyper = Window("Text:=HyperSna") 
WinHyper.WinButton("Caption:=日期").Click
WinHyper.WinButton("Caption:=时间").Click
WinHyper.WinButton("Caption:=确定").Click
如果使用了VBScript里面的With语句,还可以简化为以下代码:
With Window("Text:=HyperSna") 
.WinButton("Caption:=日期").Click 
.WinButton("Caption:=时间").Click
.WinButton("Caption:=确定").Click
End With 

Description应用:

在 Properties 集合中填充一组 Property 对象(属性和值)后,可以在测试语句中指定用 Properties 对象代替对象名。
例如,假设我们需要完成以下一个操作:
Window("Error").WinButton("text:=OK", "index:=1").Click
我们可以通过Description对象来实现同样的功能,参加下面的代码:
Set MyDescription = Description.Create()
MyDescription("text").Value = "OK"
MyDescription("index").Value = 1
Window("Error").WinButton(MyDescription).Click
Set MyDescription = Nothing

6、Left函数使用


Left函数:Left(string, length)
Dim MyString, LeftString
MyString = "VBscrīpt"
LeftString = Left(MyString, 3) ' LeftString contains "VBS".

7、mid函数使用

Mid函数:从字符串中返回指定数目的字符。Mid(string, start[, length])
Dim MyVar
MyVar = Mid("VB scrīpt is fun!", 4, 6) ' MyVar contains "scrīpt".

8、Instr函数使用


InStr函数(InStrRev函数相反从最后向前起)
返回指定的字符串在另一字符串中最先出现的位置。
InStr([start, ]string1, string2[, compare])
参数:
start:起始位置,默认从第一位
string1:主体字符串,从左向右查找。如果string1为 Null,则返回 Null。
string2:查找的字符串,如果string2为 Null,则返回 Null。找不到就返回0。
compare:0是二进制比较,1是文本比较。0为缺省值。个人感觉区别就是在大小写。
例子
Dim SearchString, SearchChar, MyPos
SearchString ="XXpXXpXXPXXP"   ' String to search in.
SearchChar = "P"   ' Search for "P".
MyPos = Instr(4, SearchString, SearchChar, 1)   ' A textual comparison starting at position 4. Returns 6.
MyPos = Instr(1, SearchString, SearchChar, 0)   ' A binary comparison starting at position 1. Returns 9.    
MyPos = Instr(SearchString, SearchChar)   ' Comparison is binary by default (last argument is omitted). Returns 9.
MyPos = Instr(1, SearchString, "W")   ' A binary comparison starting at position 1. Returns 0 ("W" is not found).

9、Split函数


******************
Split 函数
在指定的 delimiter 参数出现的所有位置断开 String 对象,将其拆分为子字符串,然后以数组形式返回子字符串。
Split(expression[, delimiter[, count[, compare]]])
参数
expression:主体字符串,也就是要被拆分处的字符或字符串。
delimiter:拆分元素,默认是(" ") 
count:Number [可选] 要放入数组中的项目数。
compare:0是二进制比较,1是文本比较。0为缺省值。
例子
Dim MyString, MyArray, Msg
MyString = "VBscrīptXisXfun!"
MyArray = Split(MyString, "x", -1, 1)
' MyArray(0) contains "VBscrīpt".
' MyArray(1) contains "is".
' MyArray(2) contains "fun!".
Msg = MyArray(0) & " " & MyArray(1)
Msg = Msg   & " " & MyArray(2)
MsgBox Msg

环境初始化
Dim loginwin
Set loginwin=descrīption.Create()            '创建对象名为loginwin的对象
loginwin( "regexpwndtitle").value="Login"       ,对象属性及值
Set child=desktop.ChildObjects (loginwin)       
For i=1 to child.count
   child(i-1).close                    '循环寻找这个对象,一次关闭
Next


10、将数据库数据导入到Excel

------------------ 
Set excelObj = CreateObject("Excel.Applicaiton") '创建一个对象
xlsUrl = "C:\QTP\0110\sql-excel-qtp\data.xls"  '指定一个已经存在的XSL文件路径
excelObj.workbooks.open(xlsUrl)    '打开EXCEL
Set sheetNew = excelObj.sheets.item(2)  '设置将数据放在EXCEL中的那一页上(索引从1开始)
'相关的数据库操作
Set conn = CreateObject("adodb.connection") set rs = createobject("adodb.recordset") conn.open "Provider=SQLOLEDB.1;Password=qaqc;Persist Security Info=True;User ID=test;Initial Catalog=test;Data Source=192.168.0.53" sql="select * from test" rs.open sql,conn 
Dim i while not rs.eof 
    user_id = rs("user_id").value
    user_name = rs("user_name").value
    sheetNew.cells(i+1,1).value = user_id  '列付值
    sheetNew.cells(i+1,2).value = user_name  '列付值
i = i + 1
    rs.movenext
wend
excelObj.activeworkbook.saveas "C:\QTP\0110\sql-excel-qtp\data.xls"  '保存数据
excelObj.quit    '关闭对象
set excelObj = nothing  '清空对象
rs.close    '关闭数据库连接操作
set rs=nothing
conn.close
set conn = nothing
 
-----这就是导出到EXCEL的全部过程:),后面如果要用到这些数据的话,直接导入进来就可以了
 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部