TestStack/White не возвращает ни одного окна приложения

Я хочу знать, могу ли я использовать TestStack для автоматизации процесса в приложении. поэтому я написал простой код для подсчета всех окон целевого приложения.

Сначала я протестировал его на образце приложения (WinForm (.net)), и он работал хорошо (возврат 1 в качестве счетчика форм).

Во-вторых я протестировал его в моем целевом приложении, но он не возвращает ни одного окна (возвращает 0 в качестве счетчика форм).

Мой код под кнопкой:

TestStack.White.Application application = TestStack.White.Application.Launch(@"C:\target.exe");

var windows = application.GetWindows();

foreach (var window in windows)
{
    MessageBox.Show(window.Title);
}

....................................введите здесь описание изображения

Дополнительная информация:

  • Когда я нажимаю кнопку, она может успешно запускать мое целевое приложение.

  • Я не знал своей технологии прикладного программирования, я думаю, это C++ и QT, но, возможно, это другое!

  • Я смотрел переменную application. Результат:

введите здесь описание изображения

Вопросы:

  • Какие причины могут вызвать эту проблему?
  • Должен ли я переключиться на другой способ TestStack для автоматизации процесса в приложениях такого типа (например, использовать низкоуровневые API и сообщения Windows или ....)?
  • Я больше разбираюсь в TestStack, есть ли у меня какие-то ошибки?
  • Какие ваши предложения???

Спасибо...


ИЗМЕНИТЬ 1

  • Имя класса целевого окна приложения: «Qt5QWindowIcon» (я использовал SpyUI, чтобы получить это)

person RAM    schedule 29.10.2014    source источник
comment
Я заметил, что он также думает, что целевое приложение завершило работу (HasExited — это правда).   -  person Mike Zboray    schedule 29.10.2014
comment
@mikez возможно ли, когда я запускаю его, он меняет свой процесс на новый процесс, и я его потерял?   -  person RAM    schedule 29.10.2014
comment
@mikez, я нашел проблему и решил ее, основываясь на вашем уведомлении, я написал ответ, большое спасибо ....   -  person RAM    schedule 29.10.2014


Ответы (2)


Я нашел проблему, основанную на уведомлении @Mikez в комментариях.

Причина проблемы была >>

Когда я запускаю целевое приложение, оно меняет свой процесс на новый процесс, и я его потерял?

Решение: теперь я изменил свой код на этот, и он работает хорошо ;)

 var myFirstTargetApp =TestStack.White.Application.Launch(@"c:\target.exe");
 myFirstTargetApp.Process.WaitForExit();

 TestStack.White.Application application = TestStack.White.Application.Attach("target");
  var windows = application.GetWindows();

  MessageBox.Show(windows.Count.ToString());  // << now my messagebox show:  1
person RAM    schedule 29.10.2014

Ты пытался:

TestStack.White.Application application = TestStack.White.Application.AttachOrLaunch("target");

Сохраняет некоторые строки кода.

person Rik    schedule 19.02.2015