通过ChildObjects方法获得webTable对象个数为空
我想通过ChildObjects方法获得页面里的webTable对象但是得不到对象,而我通过sgy观察页面里Frame("title:=output View")(即附件页面里右面的frame),是有webTable对象的,而且还不止一个,这是为什么?以下是我的代码,大家帮忙看下有什么错误。Set webTable = Description.Create()
webTable("micclass").Value = "WebTable"
set Lists = Browser("title:=ServiceUi").Page("title:=ServiceUi").Frame("title:=output View").ChildObjects(webTable)
NumberofLists = Lists.count() 测试页面见图 都是牛人啊 这么 不行,试试index
可能 哪里有点问题吧
Frame("title:=output View") 将title改为name frame是可以识别的,现在的问题是frame下的webTable对象无法识别,使用childObject得到的结果为empty,但是我最右面的显示后台流水号的frame里是有webTable的,我这样做是想通过判断webTable是否存在来判断页面执行成功或失败。因为如果测试成功的话见上面截图是有后台流水号的,我通过sgy发现是在webTable中显示的,如果失败的话见截图没有后台流水号只有错误信息,是没有webTable的,现在我只发现两者的区别在于是否有webTable,不知道大家是否有别的方法来达到我的目的,本来我也可以通过设置输出检查点来判断是否正确,但是那样需要录制脚本,我现在的脚本都是用描述编程实现的,我希望和录制脚本完全脱离开,以后通过Excel输入不同属性来执行脚本。 你用Object spy定位到webtable对象,它有micclass这个属性么?
可以看看webtable是的class什么(比如说是listTable),然后用
webTable("class").Value = "listTable"
webTable("visible").Value= True
NumberofLists = Lists.count()就取到了该frame下面所有class是listTable,visible为True的webtable的个数。
当然如果有能够唯一识别该webtable的属性(如name,innertext什么的),也可以这样:
Set webTable = Description.Create()
webTable("name").Value = "abcd"
webTable("visible").Value = True
set Lists = Browser("title:=ServiceUi").Page("title:=ServiceUi").Frame("title:=output View").WebTable(webTable)
Msgbox Lists.GetCellData(1,1) Set webTable
webTable,把你要改的名称改成其它的,如ss,也许就是这个命名的错 webTable 里 没有micclass属性,我是看帮助里ChildObjects的用法里是这么用的,如果sgy看不到这个属性就不能用吗
Set oDesc = Description.Create()
oDesc("micclass").Value = "WebList"
Set Lists = Browser("Mercury Interactive").Page("Mercury Interactive").ChildObjects(oDesc)
NumberOfLists = Lists.Count()
另外通过sgy观察到webTable的class属性为空 不是的,可以用。micclass是Web qtp对各种控件对象默认认识的。
另外通过sgy观察到webTable的class属性为空,Spy的class跟micclass不是一个意思 你的问题解决没有,我的JAVA程序,抓到的对象也是WEBTABLE,但是我写这句话,结果总是返回表头1行
ncount=Browser("Browser").Page("Ocj").Frame("Frame").WebTable("frmChild").RowCount
msgbox "查询结果记录数:"+cstr(ncount)
那位大侠看看,到底是为什么 还没有解决。 我的向对象库中添加时,自动识别时一个WEBTABLE,但是我查看它的HTML源码时,是使用JQERY动态的创建的,我在这个识别上是存在问题。但是我上面说的那个
ncount=Browser("Browser").Page("Ocj").Frame("Frame").WebTable("frmChild").RowCount
msgbox "查询结果记录数:"+cstr(ncount)
这个执行没有问题。等我解决后在聊聊, 我的可以了,以前不可以的原因是因为Frame("title:=output View")不识别,现在换成了Frame("html id:=outputView")就可以了,但是又有问题了:
我通过Description.Create()来识别对象,代码如下:
Set myDescription = Description.Create()
myDescription("micclass").Value = "WebEdit"
set Lists = Browser("title:=ServiceUi").Page("title:=ServiceUi").Frame("html id:=outputView").ChildObjects(myDescription)
希望通过WebEdit的属性来获得所有WebEdit,首先我先去要识别的对象所在的页面获得识别对象的所有属性,如截图,但是发现有些属性能够识别对象,比如
myDescription("name").Value = "WebEdit"
而有些就不能,比如Class Name,我使用myDescription("Class Name").Value = "WebEdit"就不能识别,可是Class Name属性在该对象的属性里明明有啊,这是为什么?我在通过name识别了该对象后通过Lists(i).GetROProperty("Class Name")显示Class Name为空值。而且在使用过程中发现一个奇怪的问题,就是我昨天晚上在使用myDescription("micclass").Value = "WebEdit" 时,会识别出很多对象,有些并不是WebEdit,而且把这句话注释掉后直接使用如下代码还是可以,非常奇怪,但是今天再试就可以唯一识别WebEdit对象了,不知道别人有没有遇到过类似问题,还是我的QTP版本有问题,我使用的是QTP9.2
Set myDescription = Description.Create()
'myDescription("micclass").Value = "WebEdit"
set Lists = Browser("title:=ServiceUi").Page("title:=ServiceUi").Frame("html id:=outputView").ChildObjects(myDescription) 使用createDisction.Create chileobjects 时,qtp识别对象是默认通过micclass而去识别web中的对象的(定义的语法如此),而不是class Name,这个问题我以前也遇到过,你看看帮助文档,好像有说明。
“。。。会识别出很多对象,有些并不是WebEdit。。。“,会不会是页面中有些地方实际上是编缉框,但却设置了disable属性?? 这篇文章有较详细的说明
http://blog.csdn.net/zzxxbb112/archive/2010/03/17/5389043.aspx
页:
[1]