零碎的关于QTP

上一篇 / 下一篇  2011-10-11 14:28:11 / 个人分类:QTP学习

日期控件不识别的解决办法

将日期控件识别为普通控件,如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三个webeditC=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”)’SPYRO属性中没有

 

 

外部文件作为公共函数的使用

通过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。但不影响公用(估计从本地库删除也不影响,待试验。应该是本地对象优先级高于公共对象。)

向对象库添加对象无需按照树结构逐级全部添加,若只需要底层对象,添加到其父对象即可。


TAG:

 

评分:0

我来说两句

Open Toolbar