-
(转)数据表的相关操作
2008-06-30 13:05:38
DatatableObject指的是run-time Data Table。
注意: 对本象的所有 methods 仅适用于run-time DataTable. 对run-time DataTable object的改变会反映在测试结果中,不会对design-time Data Table 产生任何影响。
1. 方法(methods):
Ø 新增表(AddSheet Method)
向run-time DataTable中增加指定的表,并将它作为返回对象,这样你就可以在同一个语句中直接设置表的属性。
参数
类型
描述
SheetName
String
新表的表名
下面的例子用AddSheet方法向Run-time DataTable中创建一个新的表(sheet)“MySheet”,并同时设置新表的一个参数。
Variable=DataTable.AddSheet ("MySheet").AddParameter("Time", "8:00")
注:Mysheet 表名;AddParameter是DTSheet Object的一个方法,语法“DTSheet.AddParameter(ParameterName, Value)”
Ø 删除表(DeleteSheet Method)
参数
类型
描述
SheetID
Variant
指定将要被删除的表。表ID可以是表名,也可以是表的index。Index的值从1开始。
下面的例子用DeleteSheet 方法从run-time DataTable中删除表“Mysheet”。
DataTable.DeleteSheet "MySheet"
Ø 导出Table(Export Method)
将Run-time data tabel导出到本地指定的位置。
参数
类型
描述
FileName
String
导出文件在本地的完整路径。 导出的文件是EXCEL文件。
下面的例子使用Export方法保存Runtime DataTable到C:\flights.xls。
DataTable.Export ("C:\flights.xls")
Ø 导出表(ExportSheet Method)
将run-time Data Table中的一个sheet导出到指定的文件。
如果指定的文件不存在,则自动创建一个新的文件,并保存表。
如果指定的文件存在,但是文件中没有指定的表名存在,则在该EXCEL文件中插入指定表名的表,新表放在工作薄的最后位置。
如果文件及表都存在,则导出的表覆盖原有的表。
DataTable.ExportSheet(FileName, DTSheet)
参数
类型
描述
FileName
String
导出文件的完整路径。
DTSheet
Variant
将要导出的 run-time Data Table中的表的名称或index。Index 值从1开始。
下面的例子使用ExportSheet方法导出RuntimeDataTable的第1个表,保存在C:\name.xls中。
DataTable.ExportSheet "C:\name.xls" ,1
Ø 导入Table(Import Method)
将Excle文件导入到run-time Data Table中。
导入的表必须与test或component匹配。即EXCEL文件的表(即sheet)名必须与Action的名称匹配,各表的列名必须与run-time Data Table中的参数(即列名)匹配。
如果导入的EXCEL文件包括combo box 或 list单元格、公式或其它特殊单元格式,这些格式将不会被导入,在DataTable中都会以固定的值显示。
参数
类型
描述
FileName
String
要被导入的Excle文件的完整路径。
导入的Table将完全覆盖RuntimeDataTable的已有数据(指所有表的所有数据。)
下面的例子使用Import方法,导入Excel文件"C:\flights.xls"。
DataTable.Import ("C:\flights.xls")
Ø 导入表(ImportSheet Method )
将Excle文件中一个表(sheet)导入到指定的run-time Data Table表中。导入后,Excle表的数据将覆盖run-time Data Table表的数据。
被导入的Excle表中的列标题必须与DataTableAction的列参数匹配。否则可能导致Test或Component失败。
导入后,Excle表名将自动替换DataTable中的表名。如果Excel与DataTable的表名不一致,可能会引起测试失败。
如果导入的Excle包括组合框或下拉列表、条件格式、或其它特殊单元格式,这些格式不会被导入,这些单元格在DataTable中都以固定的值显示。
DataTable.ImportSheet(FileName, SheetSource, SheetDest)
参数
类型
描述
FileName
String
Excle文件的完整路径及文件名。
SheetSource
Variant
Excel表名或index。Index值从1开始。
SheetDest
Variant
Data Table表的表名或index。Index值从1开始。
下面的例子使用ImportSheet方法导入Excel文件name.xls的第1个表,DataTable中的目标表是“NAME”。
DataTable.ImportSheet "C:\name.xls" ,1 ,"name"
Ø 获取当前行行号(GetCurrentRow Method )
返回run-time Data Table第一个表的当前活动行的行号。(第一个表指的是global表,或Business Components的business component表。
下面的例子使用GetCurrentRow方法获取run-time Data Table的当前活动行行号,并将获取的行号写到Report中。
Reporter.ReportEvent 1, "Row Number", row
Reproter的ReprotEvent方法的语法:Reporter.ReportEvent EventStatus, ReportStepName, Details [, in]
如果使用row = DataTable.GetSheet("MySheet").GetCurrentRow语句,则可以获得指定表“Mysheet”的当前行号。
Ø
设置某行为当前活动行(SetCurrentRow Method )
将run-time Data Table中的某行设置为当前活动行。
DataTable.SetCurrentRow(RowNumber)
参数
类型
描述
RowNumber
Number
指定成为当行活动行的行号。行号从1开始。
下面的例子使用SetCurrentRow方法,指定run-time Data Table的Global表的第2行成为当前活动行。
注:通过与GetSheet方法联合使用,可以设置某个Action表的某行为当前行。如row = DataTable.GetSheet("MySheet").GetCurrentRow。
Ø 设置下一行为当前活动行(SetNextRow Method)
将run-time Data Table当前活动行的下一行设置为新的当前活动行。
注意:将设置为当行活动行的行必须至少包括一个数据,不能是空行。如果当前行已经是DataTable的最后一行,本方法将设置DataTable的第1行为新的当行活动行。
下面的例子使用SetNextRow方法将Run-time DataTable的global表的当前活动行的下一行设置为新的活动行。
Ø 设置前一行为当前活动行(SetPrevRow Method )
设置run-time Data Table当前活动行的前一行为新的当前行。
注意:如果当前活动行是DataTable的第1行,本方法将认为DataTable的最后一行是当前活动行的前一行。
下面的例子使用SetPrevRow方法将Run-time data table的global表的当前活动行的前一行置为新的当前活动行。
Ø 获取行数(GetRowCount Method )
QTP参数化相关
2008-06-11 12:59:54
一、直接用DataTable的数据进行参数化使用技巧:比如我们要设置的参数为test1…test100;那么我们可以写成test(1-100)。(属于正则表达式的 一种应用)二、使用编程的方法产生随机数进行参数化RandomNumber.Value(…)三、取系统时间T=Time , D=Date四、对Link的参数化1、直接参数化对象库中的属性值2、使用描述性编程的方法实现五、对加密的值进行参数化的方法原QTP语句:Browser(“…”).Page(“…”).WebEdit(“pswd”).SetSecure“484241ad……”修改语句为: Browser(“…”).Page(“…”).WebEdit(“pswd”).Set“484241ad……”然后进行正常的明文参数化就OK了。六、参数化步骤和检查点中的值直接在检查点页面中进行设置即可七、对下拉框中的数据进行参数化1.通过下拉框对应项的实际值查找Browser(“****”).Page(“****”).WebList(“****”).Select “****”
将select“****”的值参数化,可以将下拉框中的每一个选项都写到数据表中2.通过下拉框对应项的索引号查找
Browser(“****”).Page(“****”).WebList(“****”).Select “#”&IndexNum
比如说下拉框有5个选项
IndexNum = RandomNumber(1,5)
以上代码生成1到5之间的随机数,5是上界,1是下界。QTP脚本录制时常用的功能
2008-06-11 12:58:15
一、录制参数设置Tools--web event recording configurationTools—options— active screen这两个参数的设置直接影响到QTP录制的精度。有的时候由于录制级别设置的问题,有的界面或某个界面元素可能无法被保存下来,那么你就无法在其上使用任何检查点,边录制边添加检查点的方法就可以避免这个问题.二、录制时常用的各种操作1、录制时增加action并修改其属性2、录制时增加检查点1)切换到QTP窗口2)Insert-CheckPoint-选择你要添加的检查点类型3)窗口自动切换到录制界面,选择你要添加的检查点内容4)窗口自动切换到检查点设置页面,设置完成后便可继续进行其他动作3、录制的过程中删除多余步骤在录制的过程中,如果你有误操作,或者多余的操作,可手动切换到QTP窗口,对多余操作进行删除或注销。(转)QTP中使用描述性编程---提高篇
2008-05-07 17:45:06
录制的脚本
Dialog("Login").WinEdit("Agent Name:").Set "Holly"
Dialog("Login").WinEdit("Password:").SetSecure "46ef0dc7efe5834c73673898279af1204fea51a7"
Dialog("Login").WinButton("Cancel").Click共录制3步操作,输入Agent Name, Password, 点击Cancel按钮提高一、使用描述性编程Dim descEditLoginSet descEditLogin = Descrīption.Create()descEditLogin("Class Name").Value = "Dialog"descEditLogin("Regexpwndtitle").Value = "Login"Dialog(descEditLogin).WinEdit("Attached text:=Agent Name:").Set "Holly"Dialog(descEditLogin).WinEdit("Attached text:=Password:").Set "Mercury"Dialog(descEditLogin).WinButton("Class Name:=WinButton", "text:=Cancel").Click在这里需要注意有两点:1)把经常使用到的对象定义为一个对象变量,方便以后调用,减少代码工作量和错误2)使用SPY获取对象的属性和属性值提高二、使用自定义的环境变量在File>>Settings>>Environment中选择user-defined,增加一个变量dlgLogin = “Login”这样脚本可以被修改为:Dim descEditLoginSet descEditLogin = Descrīption.Create()descEditLogin("Class Name").Value = "Dialog"descEditLogin("Regexpwndtitle").Value = Environment.Value("dlgLogin")Dialog(descEditLogin).WinEdit("Attached text:=Agent Name:").Set "Holly"Dialog(descEditLogin).WinEdit("Attached text:=Password:").Set "Mercury"Dialog(descEditLogin).WinButton("Class Name:=WinButton", "text:=Cancel").Click当然,参数化的方式很多,这边介绍的是使用环境变量提高三、从XML文件导入环境变量<Enviroment><Variable><Name>dlgLogin</Name><Value>Login</Value></Variable></Environment>可以使用手工导入,也可以使用LoadFromFile自动导入QTP中使用描述性编程
2008-05-06 19:32:26
一、QTP的工作原理
1.录制的时候,QTP将我们操作过的所有对象都记录下来,保存在对象库object repository中,记录的形式是一个逻辑名加上若干识别属性
2.运行脚本时,QTP分析该脚本要执行那个对象的操作,然后根据该语句中的逻辑名,在对象库中查找该对象的详细记录,然后在运行的真实披头散发软件中按图索骥,找到需要操作的对象,把语句规定的操作施加在该对象上.施加的主要动作就是把操作的相关消息时间放入到该对象窗口的消息循环队列中
也就是说,完整的脚本测试应该包括两部分:一个是测试脚本的代码,一个是对象库。
二、为什么要用描述性编程
我们在测试的过程中可能会遇到这样的问题:在执行测试的的时候某个具体的对象找不到,或者QTP无法识别该对象,那我们的测试将无法在继续执行下去。这个时候,我们就可以用描述性编程的方法来解决此问题。
三、描述性编程的具体语法格式
micClasas("property1:=value1","property2:=value2")
说明:
1、micClass标志某个对象的类别
2、括号里面通过jproperty:=value的形式告诉QTP识别该对象的必要属性
3、使用spy查看对象的属性名和属性值(tools->object spy)
四、举例
录制的脚本为:Dialog("Login").WinButton("OK").Click 对
象库无法识别OK按钮。
可修改为:脚本A:Dialog("Login").WinButton("text:=OK").Click
或
脚本B:Dialog("Login").WinButton("nativeclass:=Button","text:=OK").Click
脚本便可顺利执行。
五、总结
描述性编程,就是把对象的属性放到代码中,从代码中直接执行,而不需要通过QTP的对象库去识别。
标题搜索
我的存档
数据统计
- 访问量: 5428
- 日志数: 9
- 建立时间: 2007-12-12
- 更新时间: 2011-03-02