日期控件不识别的解决办法
将日期控件识别为普通控件,如webedit,加入对象库,然后给其赋值。
Browser("PageName").Page("PageName").WebEdit("expirationdate").Object.value = "2011-6-21"
或通过DateTable给它赋值,
Browser("PageName ").Page("PageName ").WebEdit("vo.expirationdate").Object.value = DataTable("start_date", dtLocalSheet)
WebEdit自动计算录制失效的解决办法
A\B\C三个webedit,C=A*B输入后自动计算,解决方法,聚焦模拟键盘输入。
'Browser("PageName").Page("PageName").WebEdit("quantity").Set ""
Browser("PageName").Page("PageName").WebEdit("quantity").FireEvent "onfocus"
Dim wshshell
Set wshshell=createobject("wscript.shell")
wshshell.sendkeys "10"
'Browser("PageName").Page("PageName").WebEdit("PageName").Set ""
Browser("PageName").Page("PageName").WebEdit("PageName").FireEvent "onfocus"
wshshell.sendkeys "149"
Set wshshell=nothing
多个同类型对象的操作
Set MyDescription = Description.Create()
MyDescription("html tag").Value = "INPUT"
MyDescription("type").Value = "checkbox"
Set Checkboxes =
Browser("Itinerary").Page("Itinerary").ChildObjects(MyDescription)
NoOfChildObjs = Checkboxes.Count
For Counter=0 to NoOfChildObjs-1
Checkboxes(Counter).Set "ON"
Next
一个自定义检查点的例子
If Browser("Welcome: Mercury").Page("Welcome: Mercury").
WebEdit("userName").Exist Then
Browser("Welcome: Mercury").Page("Welcome: Mercury").
WebEdit("userName").Set "mercury"
Else
Reporter.ReportEvent micFail, "UserName Check", "The User Name field
does not
exist."
End If
描述性编程的语法格式
micClasas("property1:=value1",…,"propertyN:=valueN")
遍历一个WebTable的方法
For I=1 to Browser("XXX").Page("XXX").WebTable("XXX").RowCount
For J = 1 to Browser("XXX").Page("XXX").WebTable("XXX").ColumnCount(I)
Msgbox Browser("XXX").Page("XXX").WebTable("XXX").GetCellData(I,J)
Next
Next
取webtable某单元格值
strProductname=Browser("Browser").Page("PageName").WebTable("webtablename").GetCellData(3,3)
取datatable某单元格值
先确定行号,再取当前行的某列值
DataTable.GetSheet("Sheetname").SetCurrentRow(1)
strDTProname=DataTable.Value("column name","sheet name")
避免某非主要元素加载而导致执行停滞的方法
对目标元素使用WaitProperty方法判断其属性,若正常则立即执行下一步操作,若一直未找到则超时。(超时后report该步骤状态为waring)
Browser("PageName").Page("PageName").Link("LinkName").WaitProperty "visible","true",5000
字符串比较的大小写敏感问题
可使用VBS函数ucase将比较值都转化成大写或用lcase将比较值都转化成小写再进行比较。
strInsurance_detail=ucase(Browser("Browser").Page("Enquiry Detail").WebTable("Enquiry Logs").GetCellData(6,2))
IfstrInsurance_detail=ucase(Environment.Value("have_insurance"))Then
动态属性的对象识别
例如,对于页面上的Frame,它的name属性由字符串+数字组成,数字每次都不一样。智能标识的速度很慢。在对象库中选择该Frame对象,对该对象的name属性进行参数化,使用正则表达式将name属性的数字部分改为\w*即可。
Function中使用对象作为参数和返回值
Set d = DD
MsgBox d.Item(0)
Function DD()
Set Dict = CreateObject("Scripting.Dictionary")
oDict.Add 0,"100"
Set DD = oDict
End Function
Weblist属性获取
Browser().Page().WebList().GetROProperty(“selection”)’SPY的RO属性中没有
外部文件作为公共函数的使用
通过Files->Setting->Resoure可以添加外部vbs文件。添加后可在工程中任何位置调用其中函数。该文件在run时将优先执行,故也可将环境初始化的代码放在其中。
另可通过代码加载的方式,如:
executefile environment("file_pash") & "\function_library\ACCOUNT.vbs"
但每个Action都需要。
智能识别设置
全局禁用智能识别
Dim App
Set App = CreateObject("QuickTest.Application")
App.Test.Settings.Run.DisableSmartIdentification = True
或File->Setting->Run->选中Disable SmartIdentification during the run session.
禁用某类对象的智能识别
Dim App
Set App = CreateObject("QuickTest.Application")
App.Options.ObjectIdentification("webedit").EnableSmartIdentification = False
或Tools->Object Identification->Enable Smart Identification
对象识别所使用的属性顺序:mandatory properties->assistive properties-->Smart Identification->ordinal identifier
虚拟对象文件的存储路径:<QuickTest安装文件夹>\dat\VoTemplate
环境初始化之关闭IE脚本
Set wmi=GetObject("winmgmts:\\.")
Set pro_s=wmi.instancesof("win32_process")
For Each p In pro_s
if p.name="iexplore.exe" then p.terminate()
Next
对象库模式问题
可以通过Resources->Object Repository将对象以Action为单位导出,导出后使用Object Repository Manager->Merge tool将对象库合并为一个公共对象文件,最后通过Associate Repositories将公共对象文件导入并与Action关联,不关联即为自由对象库模式,各Action即可使用公共对象。在Object Repository中,非自身的公共对象显示为灰色,自身的即使是公共对象也会显示为黑色且Repository显示为local。但不影响公用(估计从本地库删除也不影响,待试验。应该是本地对象优先级高于公共对象。)
向对象库添加对象无需按照树结构逐级全部添加,若只需要底层对象,添加到其父对象即可。