51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 2504|回复: 7
打印 上一主题 下一主题

[原创] 自己写的代码,期望得到批评与指正

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-3-26 22:49:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚开始学习QTP,写的不是很成熟,本着知识的Open & Share精神,希望能够抛砖引玉,看到大家写的更成熟的源码,并期望得到中肯的意见和建议;
这段代码并不是执行软件测试,而是利用QTP通过超级终端自动的对PHS小灵通机站进行固件版本升级.也算是自动化工具的另一种用法吧!

'********************************************************************************************************
'启动超级终端
invokeapplication "C:\Program Files\Windows NT\hypertrm.exe"
wait(5)                     '等待系统启动超级终端

Dim soft_url,bs_type

bs_type =Cint( inputbox("1--CS502   2--CS500   3--CS508   4--CS500M","请输入机站类型序号:"))

'判断屏幕是否打印出"press any key......"字符串
Window("超级终端").Activate
Call search_keyword("any")

Window("超级终端").WinObject("Term Class").Type "j"

'判断屏幕是否打印出"下载界面"
Call search_keyword("ESC")  '需要注意一下,可能因界面不同而修改

'键入“A”命令,下载A程序
window("超级终端").WinObject("Term Class").Type "a"
soft_url = DataTable.GetSheet(2).GetParameter(bs_type).ValueByRow(1)   '获取A程序的URL
Call search_keyword("Complete")  '判断ROM Erase是否完成
Call Send(soft_url)  '发送A程序

'判断屏幕是否打印出"下载界面"
Call search_keyword("ESC")

'键入“B”命令,下载B程序
window("超级终端").WinObject("Term Class").Type "b"
soft_url = DataTable.GetSheet(2).GetParameter(bs_type).ValueByRow(2)   '获取B程序的URL
Call search_keyword("Complete")  '判断ROM Erase是否完成
Call Send(soft_url)           '发送A程序

'判断屏幕是否打印出"下载界面"
Call search_keyword("ESC")

'键入“P”命令,下载P程序
window("超级终端").WinObject("Term Class").Type "p"
soft_url = DataTable.GetSheet(2).GetParameter(bs_type).ValueByRow(3)   '获取P程序的URL
Call search_keyword("Complete")  '判断ROM Erase是否完成
Call Send(soft_url)               '  发送A程序

'判断屏幕是否打印出"下载界面"
Call search_keyword("ESC")

'键入“enter”命令,结束下载过程
Window("超级终端").WinObject("Term Class").Type "enter"

'关闭超级终端
Window("超级终端").Close
'提示用户是否关闭,点击“是”
Window("超级终端").Dialog("超级终端").WinButton("是(Y)").Click


'******************************************************************************************
'搜索屏幕中打印出的关键字
Sub search_keyword(keyword)
                Dim Strkeyword,Flag,Counter
                Counter = 0
                Do
                        Counter = Counter + 1
                        wait(1)
                        If Counter > 60 Then  '应为60,调试完后修改
                                msgbox "都快一分钟了,还没响应,重来吧"
                                Exit do
                        end if
                        StrKeyword = Window("超级终端").WinObject("Term Class").GetVisibleText()
                        Flag =not  isnull(StrKeyword)
                 loop until Flag and  instrrev(StrKeyword,keyword) <> 0
End Sub

'*************************************************************************************************
'通过RS232串口发送程序到机站中
Sub Send(url)
                Dim Counter
                Counter =0
                If Window("超级终端").Dialog("为 ma 发送 Xmodem 文件").Exist(1) Then
                        Window("超级终端").Dialog("为 ma 发送 Xmodem 文件").WinButton("取消").Click
                        Window("超级终端").Dialog("正在发送文件").WinButton("确定").Click
                end if
                window("超级终端").WinMenu("Menu").Select "传送(T);发送文件(S)..."
                Window("超级终端").Dialog("发送文件").WinComboBox("协议(P):").Select "Xmodem"
                Window("超级终端").Dialog("发送文件").WinEdit("文件名(F):").Set url
                Window("超级终端").Dialog("发送文件").WinButton("发送(S)").Click
                Do while  Window("超级终端").Dialog("为 ma 发送 Xmodem 文件").Exist(1)
                                wait(10)
                                Counter = Counter + 1
                                If Counter >180 Then   '应为180,调试完后修改
                                        msgbox "已经半个小时了,还没下完,有问题吧?"
                                        Exit do
                                End If
                loop
End Sub
'*********************************************************************************************

[ 本帖最后由 walker1020 于 2008-3-26 23:26 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
    发表于 2008-3-26 23:04:10 | 只看该作者
    实现下面三个操作的代码基本相同,为什么就没有考虑到用函数来实现呢?
      1,键入A 命令,下载A程序
    2,键入B 命令,下载B程序
    3,键入P 命令,下载P程序
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-8-25 10:16
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    3#
    发表于 2008-3-27 09:28:54 | 只看该作者
    太强了  向你学习!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-27 08:48
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]测试小兵

    4#
    发表于 2008-3-27 11:05:58 | 只看该作者
    刚才 发现楼主写的代码的一个小问题:
    第二个 Call Send(soft_url)       后面的注释应该是    '发送B程序
    第三个 Call Send(soft_url)       后面的注释应该是    '发送P程序
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
     楼主| 发表于 2008-3-27 12:35:39 | 只看该作者
    原帖由 walker1020 于 2008-3-27 11:05 发表
    刚才 发现楼主写的代码的一个小问题:
    第二个 Call Send(soft_url)       后面的注释应该是    '发送B程序
    第三个 Call Send(soft_url)       后面的注释应该是    '发送P程序


    非常感谢版主walker提出的中肯意见,我已修改自己的代码;
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
     楼主| 发表于 2008-3-27 12:39:25 | 只看该作者
    原帖由 walker1020 于 2008-3-26 23:04 发表
    实现下面三个操作的代码基本相同,为什么就没有考虑到用函数来实现呢?
      1,键入A 命令,下载A程序
    2,键入B 命令,下载B程序
    3,键入P 命令,下载P程序


    有道理,好的意见采纳,感谢斑竹!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2008-3-27 13:15:50 | 只看该作者
    挺好的 自动化测试也可以用于测试的准备工作
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2008-3-27 14:23:55 | 只看该作者
    刚开始学习,大家都好厉害哦!
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-5-6 03:43 , Processed in 0.071544 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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