我快乐,不是因为我得到的多,而是因为我计较的少
QTP 参数化
上一篇 /
下一篇 2008-12-28 16:43:59
/ 个人分类:QTP
原始脚本录制:
Browser("LightPole").Page("LoginPg").Sync '打开LightPole的网站
Browser("LightPole").Refresh '刷新当前页面
Browser("LightPole").Page("LoginPg").Link("Company").Click '点击Company链接
Browser("LightPole").Page("Company").Sync ' Company链接页面打开
Browser("LightPole").Close '关闭当前页面
*******************************
参数化 (一)
Dim mylink '定义一个变量mylink
mylink="Press" '给这个变量赋值为Press
Browser("LightPole").Page("LoginPg").Sync
Browser("LightPole").Refresh
Browser("LightPole").Page("LoginPg").Link("text:="&mylink).Click '把原来录制脚本时候的链接参数化(用描述性编程"text:="&mylink)
Browser("LightPole").Page("text:="&mylink).Sync '可以回避这个页面,对应打开的页面也应该参数化,页面也参数化,和链接保持一致
Browser("LightPole").Close '关闭当前页面
运行这个脚本就会打开Press链接对应的页面 (注意:在运行脚本的时候把其它的IE窗口关掉,否则的话可能出现对象库为定义的问题)
*************************************************
参数化 (二) 把参数放在QTP自带的Datatable里,然后QTP会循环执行,用datatable里面指定列的每一行参数
前提:在datatable里面输入指定的参数,参见图片:para.jpg (在发布图片的testing 里,因为我现在在文档里面添加不了图片)
Dim mylink
mylink=DataTable("A",dtGlobalSheet) '指定列为A
Browser("LightPole").Page("LoginPg").Sync
Browser("LightPole").Refresh
Browser("LightPole").Page("LoginPg").Link("text:="&mylink).Click
Browser("LightPole").Page("text:="&mylink).Sync
Browser("LightPole").Close
************************************************************
参数化(三)
把excel表格中的数据倒入(import)到QTP的datatable中,制定其倒入的“文件名”,sheet名,把excel的数据导入到本地第几个datatable里
DataTable.ImportSheet(FileName,SheetSource,SheetDest)
Datatable.ImportSheet "参数1" ,参数2,参数3
参数1:要导入的excel文件的绝对路径
参数2:要导入的excel文件的第几个sheet
参数3:要导入到本地datatable的第几个表中
关于一下两个例子的备注说明:
注1: excel表的内容
excel:地址d:\\mydata.xls;
sheet1: sheet2:
mylink mylink
Company Blog
Press
注2.本地datatable的两个表的名称:1.Golbal ;2.Action1
例 1:
Datatable.ImportSheet "d:\\mydata.xls" ,2,2 '把excel文件中第二个sheet的数据导入到本地第2个datatable的数据表格中
Dim mylink
mylink=DataTable("lindk","Action1") '所以在这里就要调用本地第二个datatable的数据
msgbox mylink
Browser("LightPole").Page("LoginPg").Sync
'Browser("LightPole").Refresh
Browser("LightPole").Page("LoginPg").Link("text:="&mylink).Click
Browser("LightPole").Page("text:="&mylink).Sync
Datatable.SetNextRow
Browser("LightPole").Close
运行结果应该是:Msgbox应该弹出 Blog。
调用本地的第二个datatable时候,程序不会自动执行循环去遍历所有的参数,此时需要使用循环语句,判断本地其他数据表中数据的个数(遍历次数);只有在本地的Global中的数据才能自动遍历执行。
例2:
Datatable.ImportSheet "d:\\mydata.xls" ,1,1 '把excel文件中第一个sheet的数据导入到本地第二个datatable的数据表格中
Dim mylink
mylink=DataTable("lindk",dtGlobalSheet) '所以在这里就要调用本地第二个datatable的数据
msgbox mylink
Browser("LightPole").Page("LoginPg").Sync
'Browser("LightPole").Refresh
Browser("LightPole").Page("LoginPg").Link("text:="&mylink).Click
Browser("LightPole").Page("text:="&mylink).Sync
Datatable.SetNextRow
Browser("LightPole").Close
运行结果因该是:Msgbox应该弹出 Company,再一遍弹出Press。
收藏
举报
TAG:
QTP