2017-02-17 16 views
0

コンソールアプリケーションで動作するCoded UIを使用して自動テストスクリプトを作成しようとしています。Coded UIのDrawHighlight()はC#Consoleアプリケーションでは機能しません

このウェブページは私をかなり助けました。 { "多くのUIコンポーネントがこれを必要とするため、呼び出し元のスレッドが、STAでなければなりません。"}

:私はDrawHighlight()を使用している場合 http://blogs.microsoft.co.il/shair/2010/07/15/running-codedui-test-from-another-application/

しかし、私は例外以下

のSystem.InvalidOperationExceptionを取得します私はこの例外についていくつかの研究を行いましたが、すべてのソリューションはWPFまたはwinformアプリケーションのためのものです。私はそれを私のために働かせることはできません。

私のプログラムは以下の通りです:以下

using Microsoft.VisualStudio.TestTools.UITesting; 
using Microsoft.VisualStudio.TestTools.UITesting.HtmlControls; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Playback.PlaybackSettings.SearchTimeout = 10000; 
      Playback.Initialize(); 
      var browser = BrowserWindow.Launch("https://www.google.com/"); 
      HtmlEdit uIGoogleEdit = new HtmlEdit(browser); 
      uIGoogleEdit.SearchProperties.Add(HtmlControl.PropertyNames.Name, "q"); 
      uIGoogleEdit.DrawHighlight(); 
      //......(do something here)...... 
      Playback.Cleanup(); 
     } 
    } 
} 

は私が今まで試したコードの一部ですが、動作していない(上記で "uIGoogleEdit.DrawHighlightを()" 置き換え):

 Thread myThread = new Thread(new ThreadStart(delegate() 
     { 
       Dispatcher.CurrentDispatcher.Invoke(
        DispatcherPriority.Normal, 
        new Action(delegate() 
        { 
         uIGoogleEdit.DrawHighlight(); 
        })); 
     })); 

     myThread.SetApartmentState(ApartmentState.STA); 
     myThread.Start(); 

答えて

0

自分自身で解決策を見つけました。メイン関数の前に[STAThread]を追加すると、コードが機能します。

[STAThread] 
    static void Main(string[] args) 
関連する問題