콘솔 응용 프로그램에서 작동하는 코딩 된 UI를 사용하여 자동화 스크립트 (테스트 용이 아닌)를 만들려고합니다.코드화 된 UI의 DrawHighlight()가 C# 콘솔 응용 프로그램에서 작동하지 않습니다.
이 웹 페이지는 나를 상당히 도움이되었습니다. 내가 DrawHighlight()를 사용하는 경우 http://blogs.microsoft.co.il/shair/2010/07/15/running-codedui-test-from-another-application/
그러나, 나는 예외 아래
System.InvalidOperationException를 얻을 것이다 : { "많은 UI 구성 요소이 필요하기 때문에 호출하는 스레드는 STA해야합니다."}
이 예외에 대한 연구를 한 적이 있는데 모든 솔루션은 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();