从QTP参数化到WR参数化


前几天看了xiaonan和gp_jl对QTP参数化的讲解和实际应用的帖子,感觉方法不错,从另一个角度对回放过程中的对象参数化。这些天一直在做WR的学习,觉得WR与QTP对对象的识别很类似,那么WR中应该也可以通过修改GUI文件(QTP中就是对象库)中逻辑名的物理识别属性达到参数化的效果,于是同样录制了flight例子,脚本及关键语句如下:
      # Login
        set_window ("Login", 4);
        edit_set ("Agent Name:", "mercury");
        obj_type ("Agent Name:","<kTab>");
        password_edit_set("Password:", "kzptnyoslzjsaz");
        obj_type ("Password:","<kReturn>");
      # Flight Reservation
        set_window ("Flight Reservation", 6);
        edit_set ("Date of Flight:", "11/11/11");
        list_select_item ("Fly From:", "Denver"); # Item Number 0;
        list_select_item ("Fly To:", "Los Angeles"); # Item Number 2;
        obj_mouse_click ("FLIGHT", 25, 29, LEFT);
      # Flights Table
        set_window ("Flights Table", 1);
        list_select_item ("Flight", "2612  DEN  08:57 AM  LAX  09:55 AM  NW    $130.80"); # Item Number 2;
        button_press ("OK");
      # Flight Reservation
        set_window ("Flight Reservation", 5);
        edit_set ("Name:", "dionysus");
      # rc = GUI_buf_get_desc_attr(".\\gui.gui","Flight Reservation","First","label",x); # GUI_buf_get_desc_attr()函数可以得到某一个对象的属性值
      # pause(x);
        for(i=1;i<=3;i++)
        {
        switch(i)
        {
          case 1:
          {
            val = "First";
            break;    #一定要有这个break语句
          }
          case 2:
          {
            val = "Business";
            break;
          }
          case 3:
          {
            val = "Economy";
            break;
          }
        }
          rc = GUI_buf_set_desc_attr(".\\gui.gui","Flight Reservation","First","label",val);
          button_set ("First", ON);
          wait(2);
        }
        button_press ("Insert Order");

      最后回放的时候可以看到button_set函数点击逻辑名称为"Frist"的对象,但这个对象的物理描述是变化的,中国IT实验室所以每次点击都不一样。