51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 3322|回复: 8
打印 上一主题 下一主题

[fixed]if/else后,如何使脚本运行跳转到脚本前面的某一行语句重新执行

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-6-13 12:04:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.如题,测试登陆的简单功能。有时因为系统繁忙,导致无法成功登陆,系统会弹出一相应的登陆失败的提示。
2.我要做的就是按下登陆的按钮之后,用if/else语句判断是否有出错提示:如果有的话,将此提示关闭,从头开始执行登陆的操作,或从前面的某一行开始重新执行登陆的操作;如果无出错提示,继续进行后续的操作。
3.问题就是当出现出错提示后,我该如果将脚本的执行跳转到前面的某一个语句呢?用什么函数可以实现?

[ 本帖最后由 小小柠檬 于 2006-6-16 10:46 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2006-6-13 14:00:19 | 只看该作者
我写过这样一段代码,希望对你有用:
public function Login_Errorshow(in ErrorForm,in MainForm,in LoginForm)
{
        auto msg,ErrorState;

        if (win_exists(ErrorForm,1)==E_OK)
        {
                                        set_window(ErrorForm);
                                        static_get_text("ErrorStatic",msg);
                                        switch(msg)
                                        {

                                                case Er_NoUserID:  #Er_NoUserID定义成常量,值为错误提示窗体的static
                                                {
                                                        set_window(ErrorForm);  
                                                        button_press("TBtn_Confirm");
                                                        ErrorState=E_NO_USERID;
                                                        printf("     异常状态—"& E_NO_USERID &"未输入用户代码");
                                                        break;
                                                }
                                                case Er_InvalidUserPsw:
                                                {
                                                        set_window(ErrorForm);
                                                        button_press("TBtn_Confirm");                                                       
                                                        ErrorState=E_USERPSW_INVALID;
                                                        printf("     异常状态—"& E_USERPSW_INVALID &"用户密码错误");
                                                        break;
                                                }
                                                case Er_NoExistUserID:
                                                {
                                                        set_window(ErrorForm);
                                                        button_press("TBtn_Confirm");                                                       
                                                        ErrorState=E_USERID_NOEXIST;
                                                        printf("    异常状态—"& E_USERID_NOEXIST &"用户代码不存在");
                                                        break;
                                                }
                                                case Er_UnsafeUser:
                                                {
                                                        set_window(ErrorForm);
                                                        button_press("TBtn_Confirm");                                                       
                                                        ErrorState=E_USERID_UNSAFED;
                                                        printf("    异常状态—"& E_USERID_UNSAFED &"三次密码错误");
                                                        break;
                                                }
                                                default :
                                                {
                                                        set_window(ErrorForm);
                                                        button_press("TBtn_Confirm");                                                       
                                                        ErrorState=E_ANY_ERROR;
                                                        printf("    异常状态—"& E_ANY_ERROR &msg);
                                                }
                                        }       
                                return(ErrorState);
                }
#                else if (win_exists(MainForm)==E_OK)
#                {
#                        set_window(MainForm);
#                        printf("登录成功");
#                        win_close(MainForm);
#                        set_window ("Quest_Form");
#                        button_press ("TBtn_Yes");
#                        return(E_LOGIN_OK);
#                }
#                else
#                {
#                set_window(LoginForm);
#                        obj_mouse_click ("TBtn_Exit", 46, 12, LEFT);
#        }
}

public function StartSystem(in GuiFileName,in AppName)
{
        auto canrun=0,guistatus,isStart;
       
        GUI_close(GuiFileName);
        guistatus=Guifile_in_map(GuiFileName);
        if (guistatus==1)
        {
                isStart=invoke_application(AppName,"","",SW_SHOWMAXIMIZED);
                if (isStart==E_OK)
                                canrun=1;
                else
                                printf(AppName & "运行失败");
        }
        else
                printf(GuiFileName &"载入异常");
        return(canrun);
}

#*******************************************************************************
#  * 功能描述:
#  *     登录模块
#  * 输入参数:
#                LoginGui:登录时的Gui Map文件;
# *     ErrorForm: 错误窗体的逻辑名;
#                MainFrom:登录成功后的主窗体;
#                LoginForm:登录窗体;   
#  * 输出参数:
#  *     无
#  * 返回值:
#  *    Res:错误状态{-1,0...17},用于其他过程调用;
#  * 历史纪录:
#  *     修改人                日期                版本号                描述
# *          winterson                        2005/11/23        第一次创建
#*******************************************************************************/
public function LoginSystem(in LoginGui,in ErrorForm,in MainForm,in LoginForm,in UserID,in UserMiMa)
{
        auto found=0,Rgui,rc,msg,Res,currwin;
       
        GUI_close(LoginGui);
       
        Rgui=Guifile_in_map(LoginGui);
        if (Rgui!=1)
        {
                printf(LoginGui &"载入失败");
                texit;
        }
       
                set_window (LoginForm,1);
                edit_set("TEdt_UserID",UserID);
                edit_set("TEdt_UserPsw",UserMiMa);
                obj_mouse_click("TBtn_Confirm",54, 10, LEFT);
                if (rc==0)
                {
                        rc=1;
                        set_window("Er_Form_NoConnect");
                        static_get_text("Static_ConnectError",msg);
                        printf(msg);
                        button_press("TBtn_Yes");
                }
                else
                {
                         if (win_exists("Er_Form_NoConnect",1)==E_OK)
                                rc=0;
                }
                Res=Login_Errorshow(ErrorForm,MainForm,LoginForm);
                while (Res!=E_LOGIN_OK)
                {
                        Res=Login_Errorshow(ErrorForm,MainForm,LoginForm);
                }
                return(Res);

}
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2006-6-13 14:03:26 | 只看该作者
哇,好长,呵呵,谢谢,我研究下先。。。。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2006-6-13 14:49:48 | 只看该作者
貌似从里面没得到灵感,不过真是谢谢呵。继续实践...
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2006-6-13 15:35:36 | 只看该作者
关键在于用了一个while循环:
while (Res!=E_LOGIN_OK)
                {
                        Res=Login_Errorshow(ErrorForm,MainForm,LoginForm);
                }
                return(Res);
一出现错误,记录它的返回,并点击确定关闭错误提示框,直到返回成功;
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2006-6-14 09:56:03 | 只看该作者
嗯,好滴,3Q。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2006-6-14 14:33:35 | 只看该作者
感觉测试一个很简单的问题。WinRunner(other)搞的也很复杂     
一个小小的登录窗口.........就这个样子了。涉及到复杂的业务流程。头都大了.
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2006-6-14 16:51:52 | 只看该作者
呵呵,是呀,如果能有一个函数,能直接跳到某行语句执行就好了。

[ 本帖最后由 小小柠檬 于 2006-6-14 16:53 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

9#
 楼主| 发表于 2006-6-16 10:43:58 | 只看该作者
解决,用了一个while语句来决解,比较土的方法呵:while当异常窗口存在,就关闭提示窗口,按实际情况,此时会返回到原先的登陆窗口,原先输入的用户和密码也都还在,就再执行一条按登陆按钮的语句就好了。
==============
.....前面登陆script省略,当按完登陆按钮后:
   while(win_exists("提示",5)==E_OK)
   {
     set_window ("提示", 2);
     button_press("确定");
    set_window ("loginfram", 3);
    button_press("virtual_push_button");
        }
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-5-22 23:52 , Processed in 0.076581 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表