将excel表的sheet数据导入到qtp的datatable表

上一篇 / 下一篇  2011-10-14 16:53:07 / 个人分类:qtp学习

由于QTP内嵌了类似Excel表格的DataTable数据表,那么使用Excel文件为QTP脚本传递测试数据也就变得顺理成章的事情了。

Excel中的各个Sheet的数据导入到QTP数据表中,就需要用到QTP提供的导入函数:DataTable.ImportSheet(FileName,SheetSource,SheetDest),第一个参数为导入的文件名称及路径,SheetSource即导入Excel文件中的那个Sheet名称,SheetDest即为QTP的数据表中的某一个SheetName,这个Sheet可以为某个操作的ADTSheet名称,也可以为NewSheet名称。

提示:导入的数据在测试运行的过程中是可以看见的,但是当测试运行完成后,导入的数据也会消失。这个属于Run-Time DataTable

具体的脚本实现如下:

导入到本操作数据表中

Call DataTable.ImportSheet("C:\Data.xls","Global","Action1")  / * 导入Data.xls文件中的Global数据表的数据于本地数据表Action1* /

导入增加的Sheet

DataTable.AddSheet(“NewSheetName”)

Call DataTable.ImportSheet("C:\Data.xls","Global"," NewSheetName ")  / * 导入Data.xls文件中的GlobalSheet表的数据于新建数据表NewSheetName中,* /

如果你的全部数据都保存在Excel文件中,可以使用一下语句:

DataTable.ImportSheet(FileName)  //直接导入到本测试的数据表中,GDTSheet对应于文件中的GlobalSheet的数据,其他的都依次存放。

那么数据的导出就和导入差不多了,只是参数少了一个而已

DataTable.Export(FileName)  //把测试数据表的数据全部导出到文件中

DataTable.ExportSheet(FileName, DTSheet) //把测试数据表中名称为DTSheet的数据表Sheet的数据导入到文件中

Filepath=PathFinder.Locate(“filename”)

DataTable.Import(filepath)

这只针对excel表只存在一个sheet,如果存在多个sheet,就通过ImportSheet来指定sheet

Filepath=PathFinder.Locate(“global.xsl”

DataTable.AddSheet(“qtpsheet”)

DataTable.ImportSheet filepath,”mysheet”,”qtpsheet”excel中的mysheet表导入到qtpqtpsheet中。

 

 

原始脚本录制:
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

 

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)到QTPdatatable中,制定其导入的文件名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.Golbal2.Action1


1

Datatable.ImportSheet "d:\\mydata.xls" ,2,2  'excel文件中第二个sheet的数据导入到本地第2datatable的数据表格中
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:

 

评分:0

我来说两句

日历

« 2024-05-01  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 18511
  • 日志数: 42
  • 建立时间: 2011-03-23
  • 更新时间: 2012-03-13

RSS订阅

Open Toolbar