51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 4283|回复: 4
打印 上一主题 下一主题

使用Winrunner定时下载Build

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2007-12-13 23:36:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
自从上一个项目结束后已经好几个月没有动自动化工具了,今天下午leader通知新项目要开始L10n的测试,需要开始每晚定期下载Build。于是我又重新翻找之前写过的脚本,正好有一个下午的时间,顺便也把之前的脚本作了一下修改。从脚本+gui的模式改为描述性编程,能提出来的变量尽量提出(PM的意思是其他组如果需要下载,希望这个脚本也能使用),过程不太顺利,毕竟已经n多长时间没有接触了,直到下了班又做了一小时才大概完工。很多地方还是没有做到通用,没办法了,实在是没时间,而且这种活儿是不算进任务的,也就是说我一个下午其实是旷工...
说一下大概思路吧,之前写过一篇帖子讲如何通过Windows的计划任务定时调用Winrunner,那时就想使用WR做自动化下载build的工作,有网友说何不就用命令行直接ftp,省时省力。后来想了一下,觉得可能存在很多局限:美国那边上载build的时间不定,build号不定(可能跳着增加),Windows的网络传输不太可靠。最保险的还是是使用ftp下载工具进行下载,可以保证多个任务同时进行,且传输速度和过程相对稳定。那么build号的控制和定时执行等工作就可以交给WR来处理。还好WR对ftp工具(这里我用的是CuteFTP)的支持算是良好,直接录制后回放起来没问太大的问题,于是最主要的工作就是将gui map中的物理描述一步步替换到脚本中,并编写循环和判断语句做到build号的选择控制。还是以脚本说话吧:
本来脚本中是有很多注释语句的,无奈拷贝到这里都是乱码,只能删去...
#==========================================================================================================

wait(25200);
Project_label = "General FTP Sites;Connect Enterprise 7.0";    # The Connect Enterprise project label in list is "General FTP Sites;Connect Enterprise 6 build"
Current_Build = "connect_700_r532_ent";
#============================================================================================================
if(win_exists("{class: window, label: \"!GlobalSCAPE - CuteFTP.*\"}",0)==E_OK)
{
report_msg("GlobalSEAPE is existing, it will be closed");
win_close("{class: window, label: \"!GlobalSCAPE - CuteFTP.*\"}");
}
wait(5);
if(invoke_application("C:\\Program Files\\GlobalSCAPE\\CuteFTP 7 Professional\\cuteftppro.exe","","",SW_SHOW)!=0)
{
report_msg("Start CUTEFTP error");
texit;
}
else
{
report_msg("Start CUTEFTP ok");
}
#============================================================================================================
wait(3600);
#============================================================================================================
# GlobalSCAPE - CuteFTP 7.2 Professional
set_window ("{class: window, label: \"!GlobalSCAPE - CuteFTP.*\"}", 2);
list_activate_item ("{class: list, MSW_id: 1079}", Project_label); # Notice£¡ Replace the parameter "Project_label"
#============================================================================================================
wait(25);

do
{
   wait(1800);
   report_msg("waiting for build downloading, loop every 30 mins");

   win_activate ("{ class: window, label: \"!Connect Enterprise 7.*\"}");
   set_window ("{ class: window, label: \"!Connect Enterprise 7.*\"}", 2);
   obj_type ("{class: list, MSW_id: 59648}","<kF5>");
   
   wait(10);

   list_get_items_count("{class: list, MSW_id: 59648}", count);
   if (count==0)
   {
    report_msg("No build");
    texit;
   }
   for (i=0; i<count;i++)
   {
    list_get_item("{class: list, MSW_id: 59648}",i,builds_label);
  builds=builds_label;
  report_msg("all builds: Num "&i&" = "&builds);
  arr_num=split(builds, div, "_");
  if (div[arr_num]=="ent")
  {
   lastest_build=builds;
  }
    }
    report_msg("The lastest build is "&i&"="&lastest_build);
}
while(lastest_build==Current_Build);
#============================================================================================================
report_msg("Have new build: "&lastest_build);

list_select_item ("{class: list, MSW_id: 59648}",lastest_build, RIGHT);
menu_select_item ("{class: menu_item, parent: none, position: 0}");
#============================================================================================================
report_msg("The lastest build is "&lastest_build&", Copying");
#============================================================================================================

    if(win_exists("{class: window, label: \"Confirm Folder Replace\"}",5)==E_OK)
{
  win_activate ("{class: window, label: \"Confirm Folder Replace\"}");
  set_window ("{class: window, label: \"Confirm Folder Replace\"}", 2);
  button_press ("{class: push_button, label: \"Yes to All\"}");
  report_msg("Replace the build");
}
其实脚本中实现对build号的选择还是太弱了,开始想用冒泡法对当前ftp网站上所有build文件夹做个排序,选取最大值下载,但其实CuteFTP中已经就按name做了排序,我只要下在最后一个就可以了(同级目录下还有其他项目的build,所以得筛选一下再取符合条件的最后一个build),算是偷个懒。
希望这段脚本能对想学Winrunner的同行们有所帮助,有更好的实现方法还请大家指点^_^
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2007-12-14 09:21:04 | 只看该作者
不错,向LZ学习!
可以让手上的工作变的简单实现自动化,是我们自动化测试人员最开心的事,也是最有成就感的事!
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2007-12-14 15:16:47 | 只看该作者
LZ强,赞一个!
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2007-12-21 17:01:11 | 只看该作者
学习了
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2007-12-26 21:42:24 | 只看该作者
呵呵,以前谢谢你的指点哈
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-5-24 13:41 , Processed in 0.084291 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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