无法识别录制的对象WebEdit,但用object spy获取的对象却是WebElement
各位大侠麻烦帮忙看一下,这个问题困扰小妹几天了^_^录制脚本的时候,获取的代码如下:
Browser(“111").Page("222").WebEdit("WebEdit").Set "A"
Browser("111").Page("222").WebEdit("WebEdit").Set "B"
回放时,运行到这里的第一行代码,系统就说识别不了对象(那是肯定的吧,因为两个WebEdit的name都一样)
然后我就用object spy去获取下这些对象的属性,
1。直接去获取时,属性如pic1,对象是属于WebElement
2。先用Ctrl点击编辑框,获取的对象属性如pic2,对象是属于WebEdit
我尝试过用描述编程去获取这些WebEdit,但运行时系统还是识别不了对象。:(
也尝过用WebTable中的childItem来set value,但还是不行:(
各位看看有啥高见指点指点,不胜感激^_^
[ 本帖最后由 玉月亭苇 于 2008-11-17 11:50 编辑 ] QTP报告说识别不了对象,那么你可以查看一下具体原因。既然,录制的时候是WebEdit("WebEdit"),那么应该问题不大。 我尝试用描述编程,用了很多属性,最后还是识别不了对象。
不知道还有没有其他的方法。 set des=description.create()
des("micclass").value="webedit"
set Childs=Browser(“111").Page("222").chilsobjects(des)
for Num= 0 to Childs-1
Childs(Num).set "这地方在datatable中做个参数化,通过for 控制循环"
next
'只看了个大概具体小地方还要修改下,希望对你有帮助.
[ 本帖最后由 lingxin5013 于 2008-11-17 12:08 编辑 ]
回复 4# 的帖子
谢谢楼上~~但有个问题,用这种方法的话系统不会出现识别不了对象的错误,全部代码能运行下去,
可问题出现在代码全部运行下去了,却没有起作用,就是说给WebEdit赋不了值,
运行下来,WebEdit全部还是空的,一点变化也没有。
请问这是什么原因啊???
Set des=description.Create()
des("micclass").Value ="WebEdit"
Set cell= Browser("111").Page("222").ChildObjects(des)
N= cell.Count()
For i =0 to N-1
cell(i).Set("A")‘为了简单点,我没有用datatable来赋值
Next 刚又debug了一下,N是有获取到值的,N的value 为2。
但为什么for循环里的语句就是赋不了值呢??
麻烦各位走过路过的,停停脚,帮帮忙啦~~ Set des=description.Create()
des("micclass").Value ="WebEdit"
Set cell= Browser("111").Page("222").ChildObjects(des)
N= cell.Count()
For i =0 to N-1
cell(i).click
cell(i).Set("A")‘为了简单点,我没有用datatable来赋值
Next
'这样
'这样看看可行了
回复 7# 的帖子
还是不行,和前面一样,赋不了值。for循环里的语句每句都运行的好好的,也循环运行了两次,一切都是正常的,
可就是起不了作用,不知道那个值赋到哪里去了:( 不会吧,是你那个有问题吧.我刚刚实验了下是没有问题的,可以通过啊,你在仔细看看.可能你程序问题.
你随便找个注册页面,然后把代码重放下你看看,我运行是可以通过的.
要不然你就有别的没有说清楚
[ 本帖最后由 lingxin5013 于 2008-11-17 15:39 编辑 ] 如果不行的话,建议你使用映射把webelement映射为标准控键,这样肯定就可以了.
要是不行我也没折了.
回复 10# 的帖子
很感谢lingxin5013的热心指点啊,谢谢~~~可能是我没说清楚吧,你可以看看我上面发的那两个图,WebEdit是在table里面的,但是录制的时候,QTP却没有捕捉webTable,直接录制WebEdit。
所以和你说的那些什么注册页面应该有所不同,而且注册页面那两个编辑框,无论怎么捕捉时它都是WebEdit,
而我这里的情况是用object spy 直接捕捉对象时是WebElement,用Ctrl点击编辑框捕捉时才是WebEdit,
你看看这里会不会有什么问题呢??? 每次用Set前都模拟ctrl+点击的操作呢? 1:直接click那个webelement可以吗?不用ctrl
2:如果不行就你先click下 ,你那个应该要激活在进行下面的操作.
回复 13# 的帖子
呵呵,楼上的真聪明~~~现在如果在set前手工click一下那个webElement,让它的属性变成webEdit,然后接着运行set语句,就可以赋值成功~~
现在有个问题是,有没有函数可以模拟手工click的。我试了一下你上面介绍的cell(i).click,不起作用,没有click到那个cell。 FireEvent
描述: 触发事件。
语法:object.FireEvent EventName, , ,
参数 描述
object 类型 WebElement 的测试对象。
EventName 必填. String 值。 要触发的事件的名称。可用事件:onchange、onclick、ondblclick、onblur、onfocus、onmousedown、onmouseup、onmouseover、onmouseout、onsubmit、onreset、onpropertychange。
x 可选. Long 值。 相对于对象左上角的 X 坐标。
y 可选. Long 值。 相对于对象左上角的 Y 坐标。 LZ方便把页面的源代码发来看看么 谢谢各位的热心指点啊,问题终于解决了,
不过用得是比较笨的方法,就是每次在为WebEdit set值前,先将WebElement click一下,使其的属性变为WebEdit.
Browser("111").Page("222").WebElement("WebResource").Click
Browser("111").Page("222").WebEdit("WebEdit").Set"A"
Browser("111").Page("222").WebElement("WebResource_2").Click
Browser("111").Page("222").WebEdit("WebEdit").Set "B"
再次感谢各位:handshake 不管什么办法初期搞出来了就很好啊. 后期在改进就可以了.呵呵
共同学习共同提高.
页:
[1]