UFT代码片断整理(1)

1.手工参数化


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

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 
Nextsql

MsgBox "提示信息:"&vbCrLf&"操做成功",vbInformation,"Title"数据库

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

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

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

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


3.手动添加对象


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


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


mercury.externObj  ----  用于建立EXTERN对象 测试

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

'#######建立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

六、Left函数使用


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

七、mid函数使用

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

八、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).

九、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


十、将数据库数据导入到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的所有过程:),后面若是要用到这些数据的话,直接导入进来就能够了  

相关文章
相关标签/搜索