Я пытаюсь создать сценарий автоматизации (не для целей тестирования) с использованием кодированного пользовательского интерфейса, который работает в консольном приложении.DrawHighlight() в кодированном пользовательском интерфейсе не может работать в приложении консоли C#
Эта страница очень помогла мне. http://blogs.microsoft.co.il/shair/2010/07/15/running-codedui-test-from-another-application/
Однако, если я использую DrawHighlight(), я буду получать ниже исключением
System.InvalidOperationException: { "Вызывающий поток должен быть 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();