51Testing软件测试论坛

标题: 自己写的代码,期望得到批评与指正 [打印本页]

作者: machao514    时间: 2008-3-26 22:49
标题: 自己写的代码,期望得到批评与指正
刚开始学习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 编辑 ]
作者: walker1020    时间: 2008-3-26 23:04
实现下面三个操作的代码基本相同,为什么就没有考虑到用函数来实现呢?
  1,键入A 命令,下载A程序
2,键入B 命令,下载B程序
3,键入P 命令,下载P程序
作者: tiger_86    时间: 2008-3-27 09:28
太强了  向你学习!
作者: walker1020    时间: 2008-3-27 11:05
刚才 发现楼主写的代码的一个小问题:
第二个 Call Send(soft_url)       后面的注释应该是    '发送B程序
第三个 Call Send(soft_url)       后面的注释应该是    '发送P程序
作者: machao514    时间: 2008-3-27 12:35
原帖由 walker1020 于 2008-3-27 11:05 发表
刚才 发现楼主写的代码的一个小问题:
第二个 Call Send(soft_url)       后面的注释应该是    '发送B程序
第三个 Call Send(soft_url)       后面的注释应该是    '发送P程序


非常感谢版主walker提出的中肯意见,我已修改自己的代码;
作者: machao514    时间: 2008-3-27 12:39
原帖由 walker1020 于 2008-3-26 23:04 发表
实现下面三个操作的代码基本相同,为什么就没有考虑到用函数来实现呢?
  1,键入A 命令,下载A程序
2,键入B 命令,下载B程序
3,键入P 命令,下载P程序


有道理,好的意见采纳,感谢斑竹!
作者: kissing    时间: 2008-3-27 13:15
挺好的 自动化测试也可以用于测试的准备工作
作者: ym_wei    时间: 2008-3-27 14:23
刚开始学习,大家都好厉害哦!




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2