• QTP:所遇问题及部分笔记


    (N久前的笔记,估计用到的机会几乎没有了,不过放在这里吧,也算是个小历史了)

    1      常见问题

    1.1     Action切割

     

    1.2     单独action循环

    需要将循环的action的参数,放置在改循环的范围内,不能放在全局范围内,否则无法走循环。

    1.3     录制不上

    有时候会遇到录制不上但操作或运行却能走通的情况

    l  编写脚本,首先将录制不上的对象,添加至已录制的脚本中:

    资源——对象库

     

    选择对象

     

    l  在“Keyword View”页面点击空行,选择“object from repository”

    l  选择刚才添加的对象,然后去“Expert View”页面将相应的顺序调节正确。

    2       注意问题

    2.1     对象名称修改

     选中左侧对象,右侧name即可修改

    3       获取

    3.1     当前时间

    nowtime=FormatDateTime(now, 2)

    需要什么格式的时间,在控制面板——区域和语言选项中设置。
     

    3.2     字符串

    3.2.1        获取字符串全部内容

    GetROProperty

    例如:

    msg1=.Frame("审核通过框").WebElement("审核完毕框").GetROProperty ("outertext")

    3.2.2        抽取字符串部分内容

    a= Browser("T***L").Page("T***L").Frame("生成数据包及报文").WebElement("审核通过数").GetROProperty ("outertext")

    msgbox Mid(a, 14,1)

    注:Mid(a, 14,1),即从第14个字符串开始截取,取1个字符。

    3.2.3        切割字符串返回数组

    a=.WebTable("name:=003","html tag:=TABLE").GetROProperty ("outertext")

    b=split(a," ") (用空格切割)

    msgbox b(12) (读取数组中第12个的内容)

    3.3     存在

    Exist

    例如:

    Browser("T***L").Page("T***L").Frame("修改ZT页面").Image("N").Exist

    3.4     获取Data Table当前的行数

    curow=datatable.GetSheet (dtLocalSheet).GetCurrentRow

    4       数据库

    4.1     连接

    Dim adocnn ‘定义ADO连接对象

    Dim connectionstr ‘定义数据库连接字符串

    ‘获取数据库连接字符串

    Connectionstr=”Driver=MySQL ODBC”

    5       判断

    5.1     字符串是否被包含

    pos=InStr(a,b)  (a包括b)

    If pos>0 Then

            reporter.ReportEvent micPass,"PASS","PASS"

            ELSE

            reporter.ReportEvent micFail ,"pass","Failed"

    End If

    注:a,b为变量,所以没有加引号, a有没有包含b

    参考地址:http://www.cnblogs.com/ywb-lv/archive/2012/01/22/2328843.html

    例如:

    msg1=.Frame("审核通过框").WebElement("审核完毕框").GetROProperty ("outertext")

    If instr(msg1,"已审核完毕!请重新选择")>0 Then

            reporter.ReportEvent  micPass ,"补充报送_报告审核_审核通过:审核通过的报告","Passed"

            else

            reporter.ReportEvent  micFail ,"补充报送_报告审核_审核通过:审核通过的报告","Failed"

    End If

    5.2     是否存在

    If  .Frame("修改ZT页面").Image("N").Exist  Then

        reporter.ReportEvent  micPass, "KY_BLZT校验:异常校验。"&"第"&curow&"行:","Passed"

            else

        .Frame("提示框").WebButton("关闭").Click

            reporter.ReportEvent  micFail, "KY_BLZT校验:异常校验。"&"第"&curow&"行:","Falied"

    5.3     如存在则输入

    If  .Frame("修改ZT页面").WebEdit("ZT说明").Exist Then

         .Frame("修改ZT页面").WebEdit("ZT说明").Set DataTable("说明", dtLocalSheet)

           else

     End If

    5.4     将查询的行数插入表格

    datatable.Value ("sjrows",dtLocalSheet) =.WebTable("name:=selALLId","Class Name:=WebTable","html tag:=TABLE").GetROProperty("rows")

    curow=datatable.GetSheet (dtLocalSheet).GetCurrentRow

    5.5     QC自动提交bug定位表格行数和输入信息

    curow=datatable.GetSheet (dtLocalSheet).GetCurrentRow

    reporter.ReportEvent  micFail ,"查询_"&curow&"行_"&"CTNM:"&CTNM&",CTID:"&CTID&",SMID:"&SMID&",Risk_level:"&risk_level,"Failed"

    (定位出错的行数和录入的信息,这样便于开发或测试人员快速找到bug存在的原因)

    5.6     判断查询结果是否符合预期

    datatable.Value ("sjrows",dtLocalSheet) =.WebTable("name:=selALLId","Class Name:=WebTable","html tag:=TABLE").GetROProperty("rows")

    curow=datatable.GetSheet (dtLocalSheet).GetCurrentRow

    If DataTable("sjrows", dtLocalSheet) =DataTable("yqrows", dtLocalSheet) Then

          reporter.ReportEvent micPass ,"个人kh信息_查询","Passed"

          else

          reporter.ReportEvent  micFail ,"个人kh信息_查询_"&curow&"行_"&DataTable("备注", dtLocalSheet)&"。CTNM:"&CTNM&",CTID:"&CTID&",Risk_level:"&risk_level,"Failed"

    End If

    5.7     查看判断

    With Browser("T***L").Page("T***L")

    .Frame("个人kh信息").Link("name:=JLL水晶11").Click

    title1=.Frame("基本信息").GetROProperty ("title")

    a=.Frame("基本信息").WebElement("个人kh基本信息").GetROProperty ("outertext")

    b=instr(a,"JLL水晶11")

    .Frame("基本信息").Link("JY信息").Click

    title2=.Frame("JY信息").GetROProperty ("title")

    .Frame("JY信息").Link("报告履历").Click

    title3=.Frame("报告履历").GetROProperty ("title")

    .Frame("报告履历").Link("账户列表").Click

    title4=.Frame("账户列表").GetROProperty ("title")

    .Frame("账户列表").WebButton("关闭").Click

    End With

    If title1="查看个人kh" and title2="查看个人kh" and title3="查看个人kh" and title4="查看个人kh"    and b>0 Then

            reporter.ReportEvent  micPass ,"个人kh信息_ZT名称链接","Passed"

            else

            reporter.ReportEvent  micFail ,"个人kh信息_ZT名称链接","Failed" 

    End If

    Browser("T***L").Page("T***L").Sync

    Browser("T***L").Close

    6       其他

    6.1     导入(编辑框WebFile)

    With Browser("T***L")

    .Page("T***L").Frame("补充通知管理").Link("导入").Click

    .Page("T***L").Frame("导入窗口").WebFile("浏览").Click

    .Page("T***L").Frame("导入窗口").WebFile("浏览").Set "D:1项目管理5FFF4造数据1标准ZT-STAN_CTIF.xls"

    .Dialog("选择要加载的文件").WinButton("打开(O)").Click

    .Page("T***L").Frame("导入窗口").WebButton("执行导入").Click

    End with

    注:因为这个地方一般情况下,浏览框中无法直接输入,所以需要先点击一下,这样就可以自动输入了。

    参考地址:

    http://www.cnblogs.com/ruily/archive/2010/12/27/1917791.html

    6.2     延迟执行

    wait 60 (60单位:秒)

    6.3       转化变量类型

    6.3.1        返回变量类型

    VarType(varname)

    VBEmpty 0 Empty(未初始化)
    VBNull 1 Null(无有效数据)
    VBInteger 2 整数
    VBLong 3 长整数
    VBSingle 4 单精度浮点数
    VBDouble 5 双精度浮点数
    VBCurrency 6 货币值
    VBDate 7 日期
    VBString 8 字符串
    VBObject 9 对象
    VBError 10 错误值
    VBBoolean 11 布尔值
    VBVariant 12 Variant(只与变体中的数组一起使用)
    VBDataObject 13 数据访问对象
    VBDecimal 14 十进制值
    VBByte 17 位值
    VBUserDefinedType 36 包含用户定义类型的变量
    VBArray 8192 数组

    参见:http://blog.sina.com.cn/s/blog_48fe95cb010008k7.html

    6.3.2        整数转变为文本

    CStr(a)  转换为字符串string类型, a为整数Integer类型

    除了将 Integer 变量转换为文本外,CStr 函数还可以应用于任何数值数据类型,如 Double 或 Long。它还可以用来将 Date 和 Boolean 数据类型转换为文本。

    参见:http://www.lob.cn/jq/kfjq/2295.shtml

    6.3.3        数值变算

    在处理 Integer 变量时,可以在算术运算中使用 CDbl(转换 (Convert) 为 Double)函数返回一个小数。下面的步骤演示了如何在两个整数相除时使用 CDbl 函数。

    Dim A As Integer = 1

    Dim B As Integer = 2

    MsgBox(CDbl(A / B))

    该代码声明两个 Integer 变量(A 和 B),将值 1 和 2 赋给它们,然后使用 CDbl 函数转换除法运算 (A / B) 的结果并将结果显示在一个消息框中。会显示一个内容为 0.5 的消息框。

    Integer 变量仅能保存没有小数点的数值数据。String 变量仅能保存文本。使用名为 CStrConvert to String 的简写形式,表示转换为字符串)的特殊函数可以将 Visual Basic 中的每个变量转换为文本。

    Dim anInteger As Integer = 54

    MsgBox(CStr(anInteger))

    此代码声明一个名为 anInteger 的 Integer 变量,将值 54 赋给它,再通过调用 CStr 函数将此值转换为文本,并将其显示在一个消息框中。

    除了将 Integer 变量转换为文本外,CStr 函数还可以应用于任何数值数据类型,如 Double 或 Long。它还可以用来将 Date 和 Boolean 数据类型转换为文本。

    Visual Basic 还具有用于其他类型的数值变量的函数。例如,如果添加了两个 Double 类型的变量,并希望将结果四舍五入为最近似的整数,请使用CInt 函数。

    参见:http://www.lob.cn/jq/kfjq/2295.shtml

    6.3.4        文本转为数值

    CINT(1234)

    一个string变量值为1234,我想将他转换成int变量

     参见:http://bbs.csdn.net/topics/10293015

    6.3.5        时间控件无法识别且不允许手动输入 

    手工识别控件后脚本如下

    Browser("理论线损在线计算系统").Page("理论线损在线计算系统").WebEdit("startdate").Set "2010-01-01"

    问题:该时间控制不允许手工输入时间,只能进行选择时间,无法录制或运行时报错:object is disabled

    解决办法

    将上面的脚本替换为如下脚本

    Browser("理论线损在线计算系统").Page("理论线损在线计算系统").WebEdit("startdate").Object.value="2010-01-01"

    注:此方法同样适用于下拉选择框不允许用户手动输入的情况。

    参见:

    http://blog.163.com/lxr9427695@126/blog/static/43096244201061111627884/

    7       诡异现象

    脚本编写过程中经常出现诡异现象,命名编写正确,就是执行结果不正确。

    这时只能将以前的脚本注释掉,重新编写,不要浪费时间一遍遍run脚本了。

    如下面:

    If  .Frame("修改ZT页面").Image("N").Exist  Then

         reporter.ReportEvent micPass ,"KY_BLZT校验:异常校验。"&"第"&curow&"行:","Passed"

    else

    reporter.ReportEvent  micFail   ,"KY_BLZT校验:异常校验。"&"第"&curow&"行:","Failed"

    (***上面不成功,下面的成功)

    If  .Frame("修改ZT页面").Image("N").Exist  Then

        reporter.ReportEvent  micPass, "KY_BLZT校验:异常校验。"&"第"&curow&"行:","Passed"

            else

        .Frame("提示框").WebButton("关闭").Click

            reporter.ReportEvent  micFail, "KY_BLZT校验:异常校验。"&"第"&curow&"行:","Falied"

     
  • 相关阅读:
    10.19的一些题
    10.18 模拟赛
    bzoj 2212 Tree Rotations
    10.11的一些题
    10.15 模拟赛
    bzoj 5329 战略游戏
    php面向对象基础(二)
    php面向对象基础(一)
    PHP基础-数组与数据结构
    php基础-字符串处理
  • 原文地址:https://www.cnblogs.com/jxba/p/9218688.html
Copyright © 2020-2023  润新知