51Testing软件测试论坛

标题: 无法识别录制的对象WebEdit,但用object spy获取的对象却是WebElement [打印本页]

作者: 玉月亭苇    时间: 2008-11-17 11:40
标题: 无法识别录制的对象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 编辑 ]
作者: walker1020    时间: 2008-11-17 11:47
QTP  报告说识别不了对象,那么你可以查看一下具体原因。既然,录制的时候是WebEdit("WebEdit"),那么应该问题不大。
作者: 玉月亭苇    时间: 2008-11-17 11:57
我尝试用描述编程,用了很多属性,最后还是识别不了对象。
不知道还有没有其他的方法。
作者: lingxin5013    时间: 2008-11-17 12:05
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 编辑 ]
作者: 玉月亭苇    时间: 2008-11-17 13:54
标题: 回复 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
作者: 玉月亭苇    时间: 2008-11-17 14:40
刚又debug了一下,N是有获取到值的,N的value 为2。
但为什么for循环里的语句就是赋不了值呢??
麻烦各位走过路过的,停停脚,帮帮忙啦~~
作者: lingxin5013    时间: 2008-11-17 14:54
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
'这样
'这样看看可行了
作者: 玉月亭苇    时间: 2008-11-17 15:02
标题: 回复 7# 的帖子
还是不行,和前面一样,赋不了值。

for循环里的语句每句都运行的好好的,也循环运行了两次,一切都是正常的,
可就是起不了作用,不知道那个值赋到哪里去了
作者: lingxin5013    时间: 2008-11-17 15:07
不会吧,是你那个有问题吧.我刚刚实验了下是没有问题的,可以通过啊,你在仔细看看.可能你程序问题.
你随便找个注册页面,然后把代码重放下你看看,我运行是可以通过的.
要不然你就有别的没有说清楚

[ 本帖最后由 lingxin5013 于 2008-11-17 15:39 编辑 ]
作者: lingxin5013    时间: 2008-11-17 16:54
如果不行的话,建议你使用映射把webelement映射为标准控键,这样肯定就可以了.
要是不行我也没折了.
作者: 玉月亭苇    时间: 2008-11-17 17:29
标题: 回复 10# 的帖子
很感谢lingxin5013的热心指点啊,谢谢~~~

可能是我没说清楚吧,你可以看看我上面发的那两个图,WebEdit是在table里面的,但是录制的时候,QTP却没有捕捉webTable,直接录制WebEdit。
所以和你说的那些什么注册页面应该有所不同,而且注册页面那两个编辑框,无论怎么捕捉时它都是WebEdit,
而我这里的情况是用object spy 直接捕捉对象时是WebElement,用Ctrl点击编辑框捕捉时才是WebEdit,
你看看这里会不会有什么问题呢???
作者: low1210    时间: 2008-11-17 17:34
每次用Set前都模拟ctrl+点击的操作呢?
作者: lingxin5013    时间: 2008-11-17 17:36
1:直接click那个webelement可以吗?不用ctrl
2:如果不行就你先click下 ,你那个应该要激活在进行下面的操作.
作者: 玉月亭苇    时间: 2008-11-18 09:38
标题: 回复 13# 的帖子
呵呵,楼上的真聪明~~~
现在如果在set前手工click一下那个webElement,让它的属性变成webEdit,然后接着运行set语句,就可以赋值成功~~

现在有个问题是,有没有函数可以模拟手工click的。我试了一下你上面介绍的cell(i).click,不起作用,没有click到那个cell。
作者: low1210    时间: 2008-11-18 10:42
FireEvent
描述: 触发事件。

语法bject.FireEvent EventName, [x], [y], [BUTTON]

参数 描述
object 类型 WebElement 的测试对象。
EventName 必填. String 值。 要触发的事件的名称。可用事件:onchange、onclick、ondblclick、onblur、onfocus、onmousedown、onmouseup、onmouseover、onmouseout、onsubmit、onreset、onpropertychange。  
x 可选. Long 值。 相对于对象左上角的 X 坐标。  
y 可选. Long 值。 相对于对象左上角的 Y 坐标。
作者: hsjzfling    时间: 2008-11-18 10:51
LZ方便把页面的源代码发来看看么
作者: 玉月亭苇    时间: 2008-11-18 12:12
谢谢各位的热心指点啊,问题终于解决了,
不过用得是比较笨的方法,就是每次在为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"

再次感谢各位
作者: lingxin5013    时间: 2008-11-18 17:54
不管什么办法初期搞出来了就很好啊. 后期在改进就可以了.呵呵
共同学习共同提高.




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2