51Testing软件测试论坛

标题: RFT测试web的两点疑问 [打印本页]

作者: wangll    时间: 2008-7-21 23:02
标题: RFT测试web的两点疑问
1、使用RFT录制web应用时很多情况下会遇到因为网络或者其他原因导致的网页加载失败的情况,这时候回放时就会产生错误,请教各位该如何解决这个问题呢?
2、RFT录制时有些对象录不了,请问这种情况下该如何解决呢?从网上看到用第三方工具,譬如autoit,不知道是否能解决问题,你们都是如何操作的呢?
谢谢
作者: 刀客    时间: 2008-7-22 16:26
1、你可以用waitForExistance方法,如果在规定时间内找不到对象,会抛出异常,所以你可以在脚本中用try...catch来处理
2、还没遇到过,可以用find方法试试
作者: 枫飞林    时间: 2008-7-22 16:42
我们那次培训,好像我们同事说设置等待点,或者调有一个函数
public boolean loadclickloginpage()
        {
             table_htmlTable_clickloginpage().waitForExistence();
             return table_htmlTable_clickloginpage().exists();
        }
作者: lovetest6    时间: 2008-7-22 19:14
楼上不算是正解吧。
呵呵。
作者: wangll    时间: 2008-7-22 22:24
标题: 回复 2# 的帖子
用try。。catch也仅仅是抛出异常,回放还是失败的,难道测web时你们没有遇到过吗?只能听天由命?
作者: dreamever    时间: 2008-7-23 23:54
关于第一个问题,我一般是写一个while循环来实现的,代码如下:
boolean flag = false;
int time = 1;
while(!flag && time < 20){
    RootTestObject root = getRootTestObject();
    TestObject[] to = root.find();//find里的参数太复杂了,我就先不写了.
    if(to.length !0){
        flag = true;
    }
    sleep(1);
    time++;
}
以上代码将执行查找对象的操作,如果找不到对象,则会持续等待20秒,如果找到了,则结束循环执行下一行脚本,在上面的的代码中如果把time参数去掉,那么脚本就会一直查找直到找到对象为止,之所以不用RFT提供的方法,是因为我无法对RFT的方法进行重写,这样的话就无法按照我的需求去编写代码了。
关于第二个问题,我查找对象一般都是用find方法,在今年进行的自动化测试中,所有的对象识别都是建立在find方法的基础上的,没用录制功能。对于一些不能识别的OCX控件,则使用watir进行识别(我们测试的B/S系统,所以可以用WATIR),我一直不喜欢在自动化测试过程中使用录制的方式生成脚本,虽然在初期可以节省不少的工作量,但是在后期你会发现,脚本的维护工作简直就是一场恶梦!
作者: wangll    时间: 2008-7-27 17:27
标题: 回复 6# 的帖子
谢谢6楼的解释
对于1,在用find时如果没找到需要的对象,那么可以用刷新网页来搞定。我的问题通过这种方式已经解决了,呵呵
对于2,watir从网上看到过,一个开源的专门测试web的工具,但具体还没用过,先熟悉一下看看能否解决问题.
作者: lovetest6    时间: 2008-8-4 14:32
原帖由 dreamever 于 2008-7-23 23:54 发表
关于第一个问题,我一般是写一个while循环来实现的,代码如下:
boolean flag = false;
int time = 1;
while(!flag && time < 20){
    RootTestObject root = getRootTestObject();
    TestObject[] to = root.f ...


实际上rft的waitfor方法本身估计也是用while这么实现的。
作者: hanwujibaby    时间: 2008-11-26 09:27
很强很暴力




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