epjackhe 发表于 2009-6-6 06:41:15

怎么可以获取刷新后的frame

我才刚接触QTP和VBS。。。如果问得太白痴请见谅。。。

我现在想对一个网页进行录制。。。里面有一个frame是用来写入资料。。。frame可以用+/-来增加或删除行数。。。大概就像上传照片一样。。。一开始是给一个位置用户上传。。但是根据照片的数量。。可以用+/-来增加减少。。。
我想根据EXCEL文件里面行数的多少来决定要用多少行来上传。。但是每加一行。。。FRAME就会自己刷新。。。

我应该怎么才能正确的获得FRAME OBJECT呢?

chenchengo2008 发表于 2009-6-6 08:57:36

你的脚本要修改,在脚本中编辑读取当前frame信息,在引用

dreamever 发表于 2009-6-6 08:58:41

没有糟糕的问题,只有糟糕的回答。
页面刷新导致对象改变的问题也不是只有你一个人碰到,B/S经常会面临这个问题,但是解决的方法都大同小异,仍然是尝试着要获取刷新后的对象;
首先你要解决页面刷新等待的问题,这个可以判断页面的document的readystate状态来实现;
当页面刷新完成后,需要去页面中查找那个指定的frame,我想对于这样的frame对象,应该会有一个id或者name属性可以唯一识别出来,不然开发人员自己都没法处理那个frame对象;
另外,楼主其实没说明你在获取frame object时具体遇到了什么问题,所以我也只能暂时理论上的讨论一下了。

onlonely 发表于 2009-6-6 12:09:07

回复 3# 的帖子

回答的思路很好.

另外我补充点,我认为父对象,最好用正则表达式来匹配,
这样刷新后无法识别对象的概率就能下降很多.
因为如果父对象不识别,子对象是绝对识别不了的.对于刷新很多的页面,对象变化比较严重
对于非重点对象应该采用正则来匹配出来,

另外对于你需要测试的对象最好也用正则匹配掉那些非关键字段,我们的目的就是让QTP排除干扰,眼睛中只有我们需要他关注的东西.

epjackhe 发表于 2009-6-6 14:49:19

谢谢各位的回答。。
虽然好像有了模糊的思路。。其实还是搞不懂。。

“另外,楼主其实没说明你在获取frame object时具体遇到了什么问题,所以我也只能暂时理论上的讨论一下了。”

不好意思。。表达得不太清楚。。。我再说明一次看看。。
就如下面的code:
Browser( AAA).Page( BBB).Frame( X1).WebElement( TextField#1).Set("")
如果这是我在对默认(一行)的时候获得的object
如果我增加一行。。。我就尝试获得新的那一行就变成(大概)
Browser( AAA).Page( BBB).Frame( X2).WebElement( TextField#2).Set("")
从名字上看是号码增加了而已。。但是我尝试用loop。。根据input来增加数字。。但是qtp就关联不到相应的web element...
我应该怎么样来解决这种问题呢?

谢谢!:hug:

epjackhe 发表于 2009-6-6 14:50:21

就是说。。。page还是那个page。。。但是就其中的一个frame更新了。。。

FLY000 发表于 2010-11-19 15:34:36

我也碰到累死的问题

而且我需要处理的FRAME很多,变化形式都不同

xieyang702 发表于 2010-11-19 15:53:10

:),一般开发的自动刷新的实现是 重新加载了一遍页面,其实ID什么的都没有变化,你加wait 10 时间,等页面刷新后,再进行下一行数据的增加,理论上我觉得应该是可行的吧,你试试!
页: [1]
查看完整版本: 怎么可以获取刷新后的frame