(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项目管理 5FFF 4造数据 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 变量仅能保存文本。使用名为 CStr(Convert 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"