Белый UIAutomation click () перестает работать на другой платформе - PullRequest
5 голосов
/ 12 апреля 2011

Я использую Белый для автоматизации тестирования BDD нашего C # WPF UI.

Моя первая пара тестов хорошо работает на моей машине для разработки (под управлением Windows 7).Однако, когда я пытаюсь запустить один и тот же код на сервере сборки (виртуальная машина под управлением Windows Server 2003 R2), он работает неправильно.В обоих случаях тесты запускаются из командной строки, и тесты используют инфраструктуру Cuke4Nuke.В случае с сервером я обращаюсь к серверу через Remote Desktop Connection.

Код выглядит следующим образом:

var application = Application.Launch("whiteApp.exe");
var initializeOption = InitializeOption.NoCache;
var windowCriteria = SearchCriteria.ByText("whiteApp");
var window = application.GetWindow(criteria, initializeOption);
var criteria = SearchCriteria.ByAutomationId("rightButton");
var button = (Button) window.Get(criteria);
button.click();

Проблема заключается в том, что событие нажатия кнопок не запускается при запуске на сервере.На кнопку можно нажать (используя мышь), если пользовательский интерфейс остается открытым после того, как белые закончили выполнение.Один интересный момент заключается в том, что после запуска метода щелчка кнопка показывает свидетельство нажатия, как на рисунке ниже, в случае других кнопок отображается эффект наведения мыши.

Button before and after click

Ответы [ 4 ]

6 голосов
/ 13 апреля 2011

Я не уверен, является ли это вашей проблемой или нет, но я заметил, что у белых есть несколько проблем, когда они используются приложениями, созданными на платформе AnyCPU и работающими в 64-битной системе. По какой-то причине, всякий раз, когда он пытается переместить мышь в этих условиях, он автоматически толкает мышь к нижней части экрана вместо запрошенного местоположения. Это означает, что команда щелчка пропускает кнопку, на которую было сказано нажать.

Если вы создаете приложение автоматизации как приложение x86, белые автоматически автоматизируют мышь.

0 голосов
/ 30 июля 2012

Как отметил Гарри в своем ответе, принудительное применение приложения автоматизации (тестового приложения) в режиме x86.

Однако настоящая проблема создается самими белыми. На страницах обсуждений Уайта по кодексу, Hachima опубликовал модификацию исходного кода Уайта, чтобы обеспечить его работу под x86 и x64: http://white.codeplex.com/discussions/228433

0 голосов
/ 12 августа 2011

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

Я использую Project White с NUnit на 64-битной машине Win7. Чтобы это работало для меня, я должен был убедиться, что тесты выполнялись в 32-битном процессе.

Я использовал плагин TestDriven.Net. Он имеет возможность запускать любые тесты процессора как 32-битные или 64-битные.

0 голосов
/ 10 мая 2011

На моем локальном компьютере с Windows 7 x64 он делает то же самое.

Не знаю, полезно ли это, но с помощью button.RaiseClickEvent ();кажется, работает нормально.Я предполагаю, что это вызывает событие, не нажимая кнопку или smt.

...