用户名:
密 码:
验证码:





        
自动Enable SilkTest Extension 蓝天伟测试之家09年新年贺语
    [SilkTest]如何为DialogBox定义Invoke方法
作者: 蓝天伟  文章类别: 蓝天测试  发表时间: 2008-11-18 9:00:34 阅读(829)

    有时我们会遇到主窗体是DialogBox的情况,比如Windows的命令行窗体。一般我们启动主窗体时都是通过Invoke的方法实现的,但是DialogBox 是没有Invoke方法的,因此DialogBox是无法通过Invoke来启动的;因此我们只能通过点启动栏的菜单来启动窗体,或通过Run窗体来启动,但有一个问题出现了:当不同的系统(比如XP,VISTA),不同的语言系统(如中文,德文系统)的情况下,我们往往需要手工进行配置一下才可以进行操作,很不方便,而且对启动栏菜单的操作的稳定性也不是很好,所以很有可能在跑脚本的时候挂掉。

    这里给朋友们分享一个如何像启动MainWin窗体一样启动DialogBox的方法。首先讲下这样做的好处:方便(无需进行任何配置,可在任何系统,语言下运行),快速(从命令行启动肯定比点击操作要快咯!),稳定(因为不涉及到对象识别的问题,因此稳定性大大提高)。然后再讲下操作流程(其实非常简单):1. 建一个虚的主窗体(即现实并不存在这样的主窗体,只是你自己设定的),目的是启动目标DialogBox。 2.在DialogBox实现一个  Invoke方法,该方法其实是通过引用上面设定的主窗体的Invoke方法实现的。

    最后给大家一个关于启动命令行窗体的实例:
       //*******************************************
      // Description: Define a mainwin for DialogBox
      // Author: LantianWei
      // Date: Sep 16, 2008
      // History: None
      // Notice: csWinDir is dynamically getting for ‘windows’ path
      //*******************************************
      window MainWin   System32Cmd
          const sCmdLine = "{csWinDir}\system32\cmd.exe"

      //*******************************************
      // Description: Define method ‘Invoke’ for DialogBox
      // Author: LantianWei
      // Date: Sep 16, 2008
      // History: None
      //*******************************************
      window DialogBox wSystem32Cmd
          tag "*cmd.exe*"

          Invoke()
               do
                   System32Cmd.Invoke()
               Except

    希望以上内容对大家有点帮助!

   lantianwei 发表于:2008-9-25 20:30:09
      1.如果你要执行的命令是非内嵌的呢?比如是你产品自带的。用SYS_Execute()显然不行
2.该方法的意义还在于解决了如何启动像DialogBox这样的窗体的问题

   阿瓦 发表于:2008-9-23 16:10:47
      SilkTest中有现成的SYS_Execute(),这样你就不用声明窗体了。一个project中有多个MainWin,很可能会造成BaseState混乱。



     昵称:  
 

                  

联系我们 管理中心 Email:wan1314sq@126.com  QQ:236835793  MSN:lantian.wei@hotmail.com

Copyright@2007-2010 LantianWeiV3.0

备案编号:沪ICP备07012456号