private Driver(DisplayMode displayMode = DisplayMode.Hidden)
        {
            var windowTask = new TaskCompletionSource <WebAutomationWindow>();

            var t = new Thread(() =>
            {
                _window = new WebAutomationWindow();
                _ctx    = (WebAutomationWindowViewModel)_window.DataContext;
                // Initiates the dispatcher thread shutdown when the window closes

                _window.Closed += (s, e) => _window.Dispatcher.InvokeShutdown();

                if (displayMode == DisplayMode.Hidden)
                {
                    _window.WindowState   = WindowState.Minimized;
                    _window.ShowInTaskbar = false;
                }

                _window.Show();

                windowTask.SetResult(_window);
                // Makes the thread support message pumping
                System.Windows.Threading.Dispatcher.Run();
            });

            _windowTask = windowTask.Task;

            t.SetApartmentState(ApartmentState.STA);
            t.Start();
        }
 public WebAutomationWindowViewModel(WebAutomationWindow window)
 {
     _window = window;
 }