18.2 使用C#对QTP.NET插件进行扩展

18.2  使用C#对QTP.NET插件进行扩展

QTP能录制那些不被直接支持的.NET控件,但是以低级鼠标和键盘操作、Windows消息的方式反映出来,这样的脚本的可理解性、可维护性都很差。例如,对.NET的TrackBar控件的录制结果如图18.2所示。

 
图18.2 "Expert View"中的TrackBar控件的录制结果

可以看到,QTP对TrackBar控件的录制采取的是位置识别,而不是对象识别的方式,这种方式录制的结果是位置敏感的,而且录制下来的脚本以低级鼠标操作的方式反映出来,例如"Drag"、"Drop",这样的脚本的可理解性、可维护性都很差,并且由于位置受分辨率等因素的影响,容易导致回放脚本时失败。

18.2.1  安装Custom Server模板

通过安装QTP.NET插件提供的Custom Server C#项目模板到Visual Studio中,利用Visual Studio开发工具来建立Custom Server项目,适用.NET插件的扩展模块。在QTP安装目录中的"inCustom "目录下,可以找到名为"InstWizard.msi"的安装文件,用于安装Custom Server模板。

安装完成后,打开Visual Studio 2005,可以发现在C#项目中多了一个名为"QuickTest CustomServer"的模板,如图18.3所示。

 
(点击查看大图)图18.3  QuickTest CustomServer模板

目前QTP支持使用Visual Studio 2003、2005和2008版本的开发工具进行.NET插件扩展开发。

18.2.2  建立.NET控件的测试扩展项目

安装好CustomServer项目模板后,就可以开始创建CustomServer项目,编写QTP的.NET插件扩展程序。

(1)选择"QuickTest CustomServer",输入项目名和存储位置后,单击"确定"按钮,出现如图18.4所示的界面。

(2)在"Server class name"中输入"TrackBarCustomerServer",选中"Customize Record process"和"Customize Run process",并接受其他的默认设置,然后单击"Next"按钮,出现如图18.5所示的界面。

 
图18.4 "Application Settings"界面
 
图18.5 "XML Configuration Settings"界面

(3)在"Customized Control type"中输入"System.Windows.Forms.TrackBar",然后单击"Finish"按钮,完成设置。这样就创建了一个基本的CustomServer项目框架,如图18.6所示。

 
图18.6  创建CustomServer项目

18.2.3 实现控件录制逻辑

《QTP自动化测试最佳实践》第4章QTP的安装和配置,本章介绍如何使用QTP.NET插件提供的扩展性来支持第三方和个性化的.NET控件。本节为大家介绍实现控件录制逻辑。

作者:陈能技来源:电子工业出版社|2012-08-15 15:53

18.2.3  实现控件录制逻辑

创建了基本的项目框架后,还需要实现控件的录制逻辑。在"TrackBarCustomer Server"类中,添加如下方法:

  1. public void OnValueChanged(object sender, EventArgs e)  
  2. {  
  3.     System.Windows.Forms.TrackBar trackBar = (System.Windows.Forms. TrackBar) sender;  
  4.     // 获取新的值   
  5.     int newValue = trackBar.Value;  
  6.     // 把SetValue 命令录制到测试脚本中   
  7.     RecordFunction("SetValue", RecordingMode.RECORD_SEND_LINE, newValue);  
  8. }  

该方法用于在监听到TrackBar控件的ValueChanged事件发生时,获取TrackBar控件的新值,然后调用RecordFunction方法的SetValue命令,设置TrackBar控件的新值。

RecordFunction是QTP.NET插件扩展API提供的一个方法,用于往测试脚本中写入一行。其使用方法如下:

  1. public void RecordFunction(   
  2.    string strFunc, // 回放脚本时,测试对象执行的方法  
  3.    RecordingMode eMode, // RecordingMode枚举中的一个  
  4.    params object[] parameters // 要写入的变量值  
  5. 18.2.4 注册TrackBar控件的事件处理器

    《QTP自动化测试最佳实践》第4章QTP的安装和配置,本章介绍如何使用QTP.NET插件提供的扩展性来支持第三方和个性化的.NET控件。本节为大家介绍注册TrackBar控件的事件处理器。

    作者:陈能技来源:电子工业出版社|2012-08-15 15:53

    18.2.4  注册TrackBar控件的事件处理器

    在InitEventListener方法中,添加如下代码,用于注册TrackBar控件的OnValueChanged事件处理器:

    1. public override void InitEventListener()   
    2. {  
    3.     // 为OnValueChanged新建一个事件处理器  
    4.     Delegate e = new System.EventHandler(this.OnValueChanged);   
    5.     // 添加处理器  
    6.     AddHandler("ValueChanged", e);   
    7. }  
    8. 18.2.5  实现控件的运行逻辑

      还要实现控件的测试运行逻辑,在测试运行时,告诉QTP按指定的行为操作控件。因此,需要编写TrackBar控件的SetValue方法。在ITrackBarCustomerServerReplay接口中,添加SetValue方法,如下所示:

      1. [ReplayInterface]  
      2.     public interface ITrackBarCustomerServerReplay  
      3. {  
      4.     // 在ITrackBarCustomerServerReplay接口中添加SetValue方法  
      5.         void SetValue(int newValue);  
      6.     }  
      然后,在TrackBarCustomerServer类中添加SetValue方法的实现,代码如下所示:
      1. public void SetValue(int newValue)   
      2. {   
      3.     System.Windows.Forms.TrackBar trackBar = (System.Windows.Forms. TrackBar) SourceControl;   
      4.     // 改变trackBar控件的值  
      5. trackBar.Value = newValue;  
      6. }  
原文地址:https://www.cnblogs.com/gdg87813/p/10956240.html