QTP知识积累

    
 1、在调试脚本时,可能会出现,脚本没有执行完就提前结束运行;
   在语法没有问题的前提下,需要排查变量的问题:
   变量声明要求:建议使用Option Explicit语句强制显式声明所有变量;
   VBS声明变量有三种:显示声明、隐式声明和强制声明;
   使用隐式声明方式的习惯不好,因为这样有时会由于变量名拼错而导致程序运行出现意外,因此,最好在每个脚本开始第一行使用Option Explicit语句强制显式声明所有变量。 
   注意:在VBScript中,变量名是不区分大小写,即userName与UserName是指同一个变量。
    
 2、MTStar中,如何获取【商品数据管理】详细内容的行数,选择某行信息,获取某列的内容(详细内容的控件不是Table,而是WebElement)
   ChildObjects方法
   Set oDesc = Description.Create() '建立一个空属性的对象
   oDesc("html tag").value="table" '在空的对象中添加属性html tag,并赋值为“table”
   Set Lists =Browser("*").Page("*").Frame("*").WebElement("*").ChildObjects(oDesc)
   '在制定界面上获取所有属性值为"table"的对象,并赋值给Lists(注意:赋值后lists类型一个对象数组)
   NumberOfLists = Lists.Count() '获取lists里面所有对象的总数
   i=randomnumber(0,NumberOfLists-1)
   Lists(i).Click '选择列表中的随机行
   PLU_NAME_1 = Lists(t).celltext(1,3) '获得随机行中的商品名称
    
 3、MTStar中,新建【计划任务】,选择指定日期时间执行任务时,随机选择时间的方法
   同样可以使用ChildObjects方法:
   Set oDesc = Description.Create()
   oDesc("micClass").value = "WebElement" 
   Set Lists = Browser("*").Page("*").Frame("*").WebElement("指定日期_时间选择").ChildObjects(oDesc)
   NumberOfLists = Lists.Count()'获得指定日期中下拉框时间的可选择的数量,然后随机选择某个时间
   x = RandomNumber(1,96) 
   Lists(x).click
   思路:想要随机选择时间,首先要确定包含这个时间的父控件,即WebElement,然后确定该时间的控件属性(子控件),也是WebElement;我们需要在父控件中将所有子控件的对象全部统计,然后即可完成随机选择时间;
   注:通过2、3两个例子,可灵活使用ChildObjects方法。
    
 4、MTStar中,获取【商品数据管理】中详细信息中所有PLU的属性值(如单价),需要验证商品批量变价功能
   index使用:
   方法一:使用第2个例子中 Lists(t).celltext(1,3)的方法,“3”代表t行中顺序第三个内容;
   方法一的前提是,每个人的PLU可用字段设置需要一致(可在【系统设置】设置);故使用第一种方法有一定的局限性;
   方法二:使用描述性编程描述Browser("*").Page("*").Frame("*").WebElement("class:=x-grid3-col x-grid3-cell x-grid3-td-grid_PRICE_1","index:="&i).GetROProperty("innertext")
   思路:先确定要获取的值是什么属性,该例属性是WebElement,然后要定位具体详细属性,可以通过IE8自带的“开发人员工具”(F12)来定位该字段,获取详细属性;
   注:使用index的前提,多个属性拥有某个相同的详细属性,如例子中的“class”;
    
 5、MTStar中,验证备份、下载等功能时,需要清空保存路径中相同文件名的文件
   方法一:
   set fso=CreateObject("Scripting.FileSystemObject")
   bFileExist=fso.FileExists(ExcelDir)
   if bFileExist then
      set xlApp=fso.GetFile(ExcelDir)
      xlApp.Delete
   end if
   方法二:
   Set  fso = CreateObject("Scripting.FileSystemObject")
   If  fso.FileExists (sSourceFile) Then
       fso.DeleteFile (sSourceFile)
       wait 2
       Set fso = Nothing
   end if
    
 6、验证备份、下载功能,需要读取下载文件中的行数
   '读取文件中明细行数:
   Set ExcelApp = CreateObject("Excel.Application") '创建Excel自动化模型对象
   Set Workbook = ExcelApp.Workbooks.Open(ExcelDir) 'ExcelDir为Excel的路径
   rowcount = Workbook.ActiveSheet.UsedRange.Rows.count-1 '去掉标题行
   Workbook.Close
   ExcelApp.Quit
   set Workbook=nothing
   Set  ExcelApp=nothing
    
 7、对控件对象的FireEvent方法使用
   1、它支持的事件有:onchange,onclick,ondblclick,onblur,onfocus,onmousedown,onmouseup,
   onmouseover,onmouseout,onsubmit,onreset,onpropertychange。
   2、用法:
      如:(对象*).FireEvent ("onfocus");获得对象的焦点
    
 8、获取随机数的方法
   方法一:
   myRnd = RandomNumber(m,n) '生成m到n之间的随机数
   方法二:
   Randomize  '初始化随机数产生器
   myRnd = Int(((y - x + 1) * Rnd) +x) '生成x到y之间的随机数
    
 9、框架转移问题
   框架转移到JAVA版mtstar上需要修改以下内容:
   1、打开QTP,Automation-Record and Run Settings-Web,修改默认打开URL链接,在今后做调试的时候可直接打开新的URL;
   2、对应步骤1,还需要在主运行脚本.vbs文档中修改QTP默认打开的URL链接:qtTest.Settings.Launchers("Web").Address=【最新的URL】;
   3、可直接将之前的Login通用脚本,用在新的项目中,但需要重新添加对象库;
   4、脚本中需要添加两个环境变量:Log:File>C:\jintt\MT_Star_Quicktest\Report\2014-4-21_165047.xls;和TestPage:\TestCase\计划任务
   5、添加Action时,选择Call to New Action时,务必要选择“After the current step”,然后再删除对应的“RunAction "***", oneIteration”语句
     (如果选择“At the end of the test”,虽然不会出现“RunAction "***", oneIteration”语句,但是所有脚本运行结束后,仍然后继续执行刚新增的Action)。
    
 10、判断对象是否存在的用法注意
   Browser(*).Page(*).Link(*).Exist(0) = True
   False ----这个要注意了,明明Exist返回的是True,但这条语句就是返回 False;
   QTP的Exist有问题,因此以后使用时只使用以下形式:
   if Browser().Page().WebElement().exist(10) Then
   ……
   End if
   
   if Not(Browser().Page().WebElement().exist(10)) Then
   ……
   End if
    
 11、WebTable控件
   WebTable对象常用的方法有:ColumnCount、RowCount、GetCellData、ChildItem等。以下为四个方法的语法:
   1、ColumnCount 方法
   描述:返回表中的列数
   语法:object.ColumnCount (Row)
             object:类型 WebTable 的测试对象。
             Row:必填. Long 值。 行号。表中的第一行编号为 1。
   返回类型:Long 值。  
   2、RowCount 方法
   描述:返回表中的行数
   语法:object.RowCount
             object:类型 WebTable 的测试对象。
   返回类型:Long 值。
   3、GetCellData 方法
   描述:返回包含于指定单元格中的文本
   语法:object.GetCellData (vtRow, vtColumn)
             object:类型 WebTable 的测试对象。
             vtRow:必填. Variant 值。 单元格所在行的行号。表中的第一行编号为 1。
             vtColumn:必填. Variant 值。 单元格所在列的编号。表中的第一列编号为 1。
   返回类型:String 值。  返回指定单元格中包含的数据。
   如果指定单元格无效,该方法返回 micCellDoesNotExist 
   4、ChildItem 方法
   描述:按类型和索引返回单元格中的测试对象
   语法:object.ChildItem (Row, Column, MicClass, Index)
             object:类型 WebTable 的测试对象。
             Row:必填. Long 值。 单元格所在行的行号。表中的第一行编号为 1。
             Column:必填. Long 值。 单元格所在列的编号。表中的第一列编号为 1。
             MicClass:必填. String 值。 对象类型。
             Index:必填. Long 值。 单元格中 MicClass 类型的对象的索引。
                         当单元格中有多个 MicClass  类型的对象时,此索引指示所需的元素。
                         第一个对象的索引为 0。
   返回类型:Object 对象。
    
   实例一:
   Dim RowCount 
   RowCount  = Browser("Browser").Page("Page").WebTable("WebTable").RowCount
   msgbox RowCount
   For I = 2 to RowCount
    cons_no=Browser("Browser").Page("Page").Frame("Frame").WebTable("html tag:=table","index:=2").GetCellData(4,2)
    reporter.ReportEvent micDone,"用户编号","用户编号为:"&cons_no
   Next
    
   实例二:
   Set objTable=Browser("creationTime:=0").Page("index:=0").Frame("name:=TreeMenuFrame").WebTable("html tag:=TABLE","index:=1")
   dim intRow 
   intRow = Browser("creationTime:=0").Page("index:=0").Frame("name:=TreeMenuFrame").WebTable("html tag:=TABLE","index:=1").GetROProperty("rows")
    
   dim intColumn
   intColumn=Browser("creationTime:=0").Page("index:=0").Frame("name:=TreeMenuFrame").WebTable("html tag:=TABLE","index:=1").GetROProperty("cols")
    
   Set objLink = objTable.ChildItem(intRow,intColumn,"Image",32) 
   If  not objLink.Exist(0) Then
    msgbox "系统中没有您要找的菜单,请检查!"
    else
    objLink.click
   End If

转载于:https://www.cnblogs.com/tester-juan/p/4159532.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值