UIAutomationで検収テストを行う

3491 ワード

 


これは測定されたアプリケーションです.
アプリケーションNET 3.0のUIAutomationでは、次の手順でテストできます.
1.アプリケーションの起動
C#コード
  • string path = @"The Path To The Application";   
  • Process process = Process.Start(path);  
  • string path = @"The Path To The Application";
    
    Process process = Process.Start(path);
    
    

    2.メインウィンドウに対応するAutomationElementを取得
    C#コード
  • Thread.Sleep(1000);   
  • AutomationElement aeMainWindow = AutomationElement.FromHandle(process.MainWindowHandle);  
  • Thread.Sleep(1000);
    
    AutomationElement aeMainWindow = AutomationElement.FromHandle(process.MainWindowHandle);
    
    

    3.ボタンに対応するAutomationElementを取得
    C#コード
  • AutomationElement aeHelloButton = aeMainWindow.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Button));  
  • AutomationElement aeHelloButton = aeMainWindow.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Button));
    
    

    4.ボタンをクリック
    ここでGetCurrentPatternはQuery Interfaceに相当し,PatternもUIAutomationの真髄である.異なるUIフレームワークに異なるadapterを作り、様々なpatternを実現し、つまり概念上の大きなUIを構築した.
    C#コード
  • InvokePattern ipHelloButton = (InvokePattern) aeHelloButton.GetCurrentPattern(InvokePattern.Pattern);   
  • ipHelloButton.Invoke();  
  • InvokePattern ipHelloButton = (InvokePattern) aeHelloButton.GetCurrentPattern(InvokePattern.Pattern);
    
    ipHelloButton.Invoke();
    
    

    5.テキストボックスに対応するAutomationElementを取得
    C#コード
  • AutomationElement aeHelloTextBox = aeMainWindow.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Edit));  
  • AutomationElement aeHelloTextBox = aeMainWindow.FindFirst(TreeScope.Children, new PropertyCondition(AutomationElement.ControlTypeProperty, ControlType.Edit));
    
    

    6.テキストボックスのテキストを取得する
    C#コード
  • TextPattern tpHelloTextBox = (TextPattern) aeHelloTextBox.GetCurrentPattern(TextPattern.Pattern);   
  • string text = tpHelloTextBox.DocumentRange.GetText(-1);  
  • TextPattern tpHelloTextBox = (TextPattern) aeHelloTextBox.GetCurrentPattern(TextPattern.Pattern);
    
    string text = tpHelloTextBox.DocumentRange.GetText(-1);
    
    

    7.リスニングウィンドウが閉じられたイベント
    C#コード
  • Automation.AddAutomationEventHandler(WindowPattern.WindowClosedEvent, aeMainWindow, TreeScope.Element, HandleMainWindowClose);   
  • private static void HandleMainWindowClose(object sender, AutomationEventArgs e)   
  • {   
  •   Console.WriteLine("Main Window Closed");   
  • }  
  • Automation.AddAutomationEventHandler(WindowPattern.WindowClosedEvent, aeMainWindow, TreeScope.Element, HandleMainWindowClose);
    
    private static void HandleMainWindowClose(object sender, AutomationEventArgs e)
    
    {
    
    Console.WriteLine("Main Window Closed");
    
    }
    
    

    8.ウィンドウを閉じる
    C#コード
  • process.Kill();  
  • process.Kill();
    
    

    コンソールに「Main Window Closed」と印刷されます
    プロセス全体で3つの主要な機能を実証しました.
    1、インタフェースの操作方法(ボタンクリック)
    2.インタフェースの状態(テキストの取得)の取得方法
    3、インタフェースのイベントをどのように傍受するか(ウィンドウイベントを閉じる)
    結論:
    UIautomationはWin 32,WindowsForms,WPFで作成されたアプリケーションに検収テストを作成することができる.