51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 15774|回复: 46
打印 上一主题 下一主题

登陆界面的测试程序

[复制链接]

该用户从未签到

1#
发表于 2004-12-28 15:39:54 | 显示全部楼层
问题已经解决!
本人已经在机子上试过了,可以做到!
现在我是这样做的.
先录制,然后做数据驱动!
数据就是这以下几个
name      password1
asd           asdfasdf
空格          空格
sdfwerw    sdfsdf





table = "e1.xls";
rc = ddt_open(table, DDT_MODE_READ);
if (rc!= E_OK && rc != E_FILE_OPEN)
        pause("Cannot open table.");
ddt_get_row_count(table,table_RowCount);
for(table_Row = 1; table_Row <= table_RowCount; table_Row ++)
{
        ddt_set_row(table,table_Row);
       
        # Login
                set_window ("Login", 9);
                obj_type ("Agent Name:","<kCtrl_L>");
                edit_set ("Agent Name:", ddt_val(table,"Name"));
                password_edit_set("Password:", ddt_val(table,"Password1"));
                button_press ("OK");
        # 字符输入错误,弹出错误窗口
            if  (win_exists("Flight Reservations")==E_OK)
           {
                  win_mouse_click ("Flight Reservations", 120, 13);
                  set_window ("Flight Reservations", 3);
                  button_press ("确定");
                                                 }
   # 字符输入错误,弹出错误窗口
           if (win_exists("Flight Reservations")==E_OK)
       
            {
                     set_window ("Flight Reservations", 22);
                 button_press ("确定");
                                             }

    #如果用户名和密码都为用空        
        if(ddt_val(table,"Name")== ""||ddt_val(table,"Password") == "")
                {
                      tl_step("用户名和密码",0,"用户名和密码都为空!");}
                                          else
                                            {
                                                    pause(ddt_val(table,"Name"));#如果不为空就输出
                                                    pause(ddt_val(table,"Password"));
                                               
                }
}

ddt_close(table);


记住,LOGIN 窗口如果PASSWORD三次错误,它会自动退出!每次执行时,记得重新打开!如果不想就在最后加一句
invoke_application()就可以了!
以上是基本的程序,你看完要自己在自己的机子上做才行!
回复 支持 反对

使用道具 举报

该用户从未签到

2#
发表于 2004-12-29 08:23:14 | 显示全部楼层
如果没有什么其它的窗口弹出那两个是一样的!没有什么区别!
但如果你的数据输入不同那就不一样了,
就是你设置的数据有长有短.
你观察一下出错的可能性有几种,
当所有可能出现时,你的程序可不可以做到,
你都要想到,
而不是录制完就完了!
如果觉得多余那就把它拿掉吧!
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2004-12-29 08:51:50 | 显示全部楼层
Originally posted by dyjyhx at 2004-12-29 08:32 AM:
#如果用户名和密码都为用空        
        if(ddt_val(table,"Name")== ""||ddt_val(table,"Password") == "")
                {
                      tl_step ...

你可以把pause拿掉,它只是拿来显示给你看的窗口,当然会有CONTINUE出现!
就是测试用的,让你知道如果为否是输入出什么,这样更清了解楚程序!
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2004-12-29 08:55:36 | 显示全部楼层
Originally posted by dyjyhx at 2004-12-29 08:39 AM:
如果没有什么其它的窗口弹出那两个是一样的!没有什么区别!
但如果你的数据输入不同那就不一样了,
就是你设置的数据有长有短.
你观察一下出错的可能性有几种,
当所有可能出现时,你的程序可不可以做到,
你都要 ...

当时我也不知道怎么试的,如果觉得多余就用#让它不执行!
如果下次碰到再放出来!
现在没有什么时间去想它!
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2004-12-29 10:10:13 | 显示全部楼层
你的Password没有改名吧?
你应该把它改成不能跟PASSWORD同名的,
你试一下把它改成其它的
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2004-12-29 11:55:27 | 显示全部楼层
哈哈哈,
如果PASSWORD错误三次,那个程序会自己的退出的.
所以你先用DEBUG调试吧.
应该是那个名字,你再改一改,或者重新录制一下!
总之做多了也就熟了!
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2004-12-29 16:00:48 | 显示全部楼层
Originally posted by dyjyhx at 2004-12-29 03:53 PM:
是不是我没有用通配符的原因?多个数据驱动必须用通配符吗?如果要用,这个例子在什么地方用通配符?

应该不用阿!是不是说PASSWORD是非法呢?
我没有这个问题阿!
一开始我没有改名字就有你说的那个问题,现在修改过来之后就没有了!
我回去再试试!
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2004-12-29 16:02:31 | 显示全部楼层
Originally posted by lousia at 2004-12-29 03:36 PM:
obj_type ("Agent Name:","<kCtrl_L>");
<kCtrl_L>"是键盘上的哪个键?

哦,<kCtrl_L>这个是CTRL+空格
你可以在输入方框试一下!
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2004-12-30 23:01:58 | 显示全部楼层
回到宿舍调试了一下,
发现到第三个数据时,password_edit_set()就出现illegal number!很奇怪
想不通!

调出程序出来调试一下,很复杂,看不明白,
你自己看一下吧!

table = "e1.xls";
rc = ddt_open(table, DDT_MODE_READ);
if (rc!= E_OK && rc != E_FILE_OPEN)
        pause("Cannot open table.");
ddt_get_row_count(table,table_RowCount);
for(table_Row = 1; table_Row <= table_RowCount; table_Row ++)
{
        ddt_set_row(table,table_Row);
       
        # Login
                set_window ("Login", 3);
                obj_type ("Agent Name:","<kCtrl_L>");
                edit_set ("Agent Name:", ddt_val(table,"Name_1"));
                edit_set ("Agent Name:", ddt_val(table,"Name_1"));
                password_edit_set("Password_1:", ddt_val(table,"pwd"));
                button_press ("OK");
        # 字符输入错误,弹出错误窗口

            if  (win_exists("Flight Reservations")==E_OK)
                   {
                          win_mouse_click ("Flight Reservations", 120, 13);
                          set_window ("Flight Reservations", 3);
                          button_press ("确定");
                                                               }
                #如果用户名和密码都为用空
                                                                                   
            if(ddt_val(table,"Name_1")== ""||ddt_val(table,"pwd") == "")
                        {
                              tl_step("用户名和密码",0,"用户名和密码都为空!");
                                                  }
                                                 
                                                                                          else
                                                    {
                                                                                                   #sprintf("%." & Agent Name: & "f","Name_1");
                                                                                                   tl_step("用户名和密码",1,"用户名和密码都可能为空!");
                                                            #pause(ddt_val(table,"Name_1"));#如果不为空就输出
                                                           # pause(ddt_val(table,"pwd"));
                                                                                                                }
}
ddt_close(table);
public function password_edit_set(edit, text)
{
        auto text_buf, i, timeout,old_report_name;
        auto status;

        web_get_timeout(timeout);
       
       
        if (nargs() != 2)
                return(report_param_msg());

    get_report_info(old_report_name);
        save_report_info("edit_set");

        if (Y2K && getvar("sysmode") != "replay")
                Y2K_edit_translate(edit, text, text_buf);
        else
                text_buf = text;

        if (window_is_a_browser_or_frame())
        {
                ns_dont_pop_wizard = TRUE;
                for (i=0;i<timeout;i++)
                {
                         status = activate_function(TOBJ, edit, "web_password_edit_set", text_buf);

                        if (status == E_AREA_OUT)
                                set_window(GUI_get_window(),1);
                        else
                                break;               
                }
                ns_dont_pop_wizard = FALSE;
                 status = activate_function(TOBJ, edit, "web_password_edit_set", text_buf);
        }
        else
                status = activate_function(TOBJ, edit, "_password_edit_set", text_buf);

        save_report_info(old_report_name);
        return(status);
}
public function edit_set(in edit, in str, in date_source, in date_target)
{
        auto desc, file;

        if(getvar("sysmode") == "replay") {
                GUI_map_get_desc (GUI_get_window(), edit, desc, file);
                return (_edit_set(desc, str));
        }
        else {
                if(nargs() == 4)
                        return(Y2K_edit_set(edit, str, date_source, date_target));
                else if(nargs() == 3)
                        return(Y2K_edit_set(edit, str, date_source));
                else
                        return(Y2K_edit_set(edit, str));
        }
}

public function Y2K_edit_set(in edit, in new_text, in date_source, in date_target)
{
        auto trans_text;

        if(nargs() == 4)
                Y2K_edit_translate(edit, new_text, trans_text, date_source, date_target);
        else if(nargs() == 3)
                Y2K_edit_translate(edit, new_text, trans_text, date_source);
        else
                Y2K_edit_translate(edit, new_text, trans_text);

        return (activate_function(TEDIT, edit, "_edit_set", trans_text));
}

public function Y2K_edit_translate(in edit, in new_text, out trans_text, in date_source, in date_target)
{
        auto source, target, file, rcs, rct, win_name, class, desc;
        auto age_type, age_d, age_m, age_y, rca, rcd, rcm, rcy;

        rca = rcd = rcm = rcy = 1;
        age_type = DEFAULT_AGING;
        age_d = age_m = age_y = 0;
        win_name = GUI_get_window();

        source = "";
        if (nargs() == 5) {
                source = date_source;
                target = date_target;
                rcs = rct = 0;
        }
        else {
                if(nargs() == 4) {
                        source = date_source;
                        rcs = 0;
                }

                if (get_Y2K_type_mode() == DISABLE_OVERRIDE ||
                        (TE && Y2K_get_capture_mode() != FIELD_METHOD)) {
                        rcs = rct = 1;
                        if(nargs() == 4) rcs = 0;
                }
                else {
                        win_get_info(win_name,"class",class);
                        if (class == "mic_if_win")
                                rcs=rct=1;
                        else {
                                GUI_map_get_desc (win_name, edit, desc, file);
                                if(source == "")
                                        rcs=GUI_buf_get_data_attr(file,win_name,edit,"date_source",source);
                                rct=GUI_buf_get_data_attr(file,win_name,edit,"date_target",target);
                                rca = GUI_buf_get_data_attr(file,win_name,edit,"age_type",age_type);
                                if (!rca) {
                                        rcd = GUI_buf_get_data_attr(file, win_name, edit, "age_days", age_d);
                                        rcm = GUI_buf_get_data_attr(file, win_name, edit, "age_months", age_m);
                                        rcy = GUI_buf_get_data_attr(file, win_name, edit, "age_years", age_y);
                                }
                                if (rca || rcd || rcm || rcy)
                                        age_type = DEFAULT_AGING;
                        }
                }
        }

        type_translate(source, target, new_text, trans_text, rcs, rct, age_type, age_d, age_m, age_y, FALSE);
}
#
#       Popup an error message about illegal number of parameters.
#
public function report_param_msg(in func_name)
{
  auto doagain;

  process_return_value(E_ILLEGAL_NUM_OF_PARAMS, func_name, TWINDOW, 0, doagain);
  return(E_ILLEGAL_NUM_OF_PARAMS);
}



#--------------------------------------------------------------------------------------------------#
public function window_is_a_browser_or_frame(win, timeout)
{
        auto hWnd, rc;
        if (nargs() == 0 )
                rc = current_window_is_a_browser_or_frame(0);
        else  if (nargs() < 3 ) {
            ns_dont_pop_wizard = TRUE;
                rc = win_get_info(win,"handle",hWnd);
                ns_dont_pop_wizard = FALSE;
                if (rc != E_OK) {
                        return FALSE;
                }
                rc = current_window_is_a_browser_or_frame(hWnd);
        }
        else
        {
                report_param_msg();
                return FALSE;
        }
        return rc;
}

[ Last edited by QA_BAY on 2005-1-1 at 20:37 ]
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2004-12-30 23:03:38 | 显示全部楼层
以上需要的程序我都调出来了,
你要用DEBUG程序来调试一下才行!
如果看不明白的就到HELP查找吧!
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2005-1-4 16:18:42 | 显示全部楼层
Originally posted by dyjyhx at 2005-1-4 03:43 PM:
在WinRunner的例子里找到了了示例脚本。按它的方法就没有这种问题。原因还是不太明白。

另外,它用到了自定义函数,并且把自定义函数放到了类似链接库(*Lib)的文件里。不知道怎么创建这种文件。请高手指点

你打开WR之后,点FILE---TEST PROPERTIES
把TEST TYPE的MAIN改为 COMPLIED MODULE就行了
然后你自己写的自定义程序就可以保存在LIB下面了!
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-5-23 17:51 , Processed in 0.068351 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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