Как я могу запускать тесты пользовательского интерфейса с FlaUI на удаленной машине, но не в RDP? - PullRequest
0 голосов
/ 10 января 2019

У нас есть несколько тестов пользовательского интерфейса, которые используют FlaUI для автоматизации взаимодействия с пользовательским интерфейсом Windows.

Когда мы запускаем эти тесты на сервере сборки, они не взаимодействуют с пользовательским интерфейсом, если кто-то не подключен через RDP.

Ошибка, которую мы получаем из тестов, это просто Could not send mouse input. ErrorCode: 5

Машина настроена на вход пользователя в систему при запуске, и если мы войдем в сеанс RDP от имени этого пользователя и «проследим» за тестами, они будут работать нормально и могут взаимодействовать с рабочим столом. Как только мы отключаем этого пользователя, он перестает взаимодействовать.

Мы запускаем тесты через узлы сетки NCrunch, используя консольное приложение узла сетки NCrunch, которое запускается при входе в систему (т. Е. Не работает как служба, поэтому может взаимодействовать с рабочим столом).

Есть ли способ запустить тесты таким образом, чтобы нам не приходилось их постоянно наблюдать?

Ответы [ 3 ]

0 голосов
/ 19 января 2019

Насколько я помню, вы можете вызывать события на элементах управления вместо того, чтобы имитировать их с помощью мыши. Это отличается, поскольку события вводятся. Это относится не только к адаптации TestStack.White, но и к большинству фреймворков роботов. Итак, что было и есть мотивация использования мыши?

Когда JQuery появился в Javascript, среди прочего он изменил парадигму ссылок на элементы. Но это также уменьшило объем кода, который вам нужно написать, создайте служебный метод и измените:

FindFirstChild(cf => cf.ByAutomationId("RedButton")).AsButton().Click();

на что-то более короткое, например:

_.Find<Button>("RedButton").Click();

По неосторожности вы удаляете один слой абстракции, делаете их более читабельными, работаете быстрее, не зависят от разрешения экрана или разрешения точек на дюйм и т. Д.

Одна вещь, которую я бы попробовал, если предыдущая была неприменима, - запустить реализацию NCrunch Grid на виртуальной машине. Я имею в виду, теоретически, это могло бы работать.

0 голосов
/ 22 января 2019

Итак, я сделал эту работу. В основном я следовал инструкциям здесь , но также отключил запуск ServerManager при входе пользователя в TaskScheduler.

Политика компании также запрещает блокировку компьютеров, поэтому у нас есть сценарий powershell, который дважды нажимает numlock каждую минуту, чтобы предотвратить блокировку рабочего стола.

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

0 голосов
/ 16 января 2019

Если вы имитируете щелчок мыши, должен быть активный сеанс рабочего стола (https://github.com/Roemer/FlaUI/wiki/FAQ#how-can-i-run-flaui-tests-on-a-build-serveragent).

У вас есть два варианта: тестировать без щелчков мышью (используйте шаблоны UIA) или обеспечить активный сеанс рабочего стола для агента сборки. Как указано в FAQ, убедитесь, что сессия не закрыта после отключения RDP, запустив tscon 1 /dest:console

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...