zoukankan      html  css  js  c++  java
  • 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:jinttMT_Star_QuicktestReport2014-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
  • 相关阅读:
    CH1301 邻值查找【set应用】
    poj1185 炮兵阵地【状压DP】
    codeforces#516 Div2---ABCD
    2017ACM-ICPC沈阳区域赛
    poj2411 Mondriaan's Dream【状压DP】
    hdu2196 Computer【树形DP】【换根法】
    poj3345 Bribing FIPA【树形DP】【背包】
    poj1463 Strategic game【树形DP】
    poj1191 棋盘分割【区间DP】【记忆化搜索】
    CH5E09 能量相连【区间DP】
  • 原文地址:https://www.cnblogs.com/tester-juan/p/4159532.html
Copyright © 2011-2022 走看看