Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Автоматизация Windows приложения . C#


(Hathi) #1

Нужна автоматизация Windows приложения. Проблема в том что оно всегда лежит в трее и чтоб его открыть надо на него кликруть. В Java есть Sikuli, а если альтернатива для C#?

Если есть возможность использовать UI.Automation или White Framework то раскажите как :-)

Спасибо!


(ffess) #2

Мне кажется  Coded UI Test  бы справился без проблем


(Hathi) #3

Coded UI Test  в простую вижуалстудию не входит. Для него надо крутая лицензия


(rpwheeler) #4

А вызовы командной строки доступны? Если да, то вызов Sikuli можно (если мне не изменяет память) упаковать в самостоятельный исполняемый скрипт или обернуть его в вызов Robot Framework. 
 
Также некотрые приложения вылезают из трея если еще раз запустить исполняемый файл.


(ffess) #5

Но зато проблему (в данном случае Вашу) он решит быстро и легко, а для того, чтобы начальству (или кастомеру) показать как это выгодно - можно поставить триалку на 90 дней. За это время оч много можно наваять, что компании потом будет очень жалко потерять, не покупая лицензию на тот же Премиум ;)


(apetrovskiy) #6

Windows 7 English:

Если сидит в трее и не скрыто (на примере значка сетевых соединений):

Get-UIADesktop | Get-UIAPane -Class 'TrayNotifyWnd' | Get-UIAButton -Name 'Network*Internet*access' | Invoke-UIAButtonClick;

Если скрыто и надо кликнуть маленький треугольник (допустим, вынуть флешку):

 

Get-UIADesktop | Get-UIAPane -Class 'TrayNotifyWnd' | Get-UIAButton -Name 'NotificationChevron' -Win32 | Invoke-UIAButtonClick;
Get-UIAWindow -Name 'NotificationOverflow' | Get-UIAToolBar -Name 'Overflow*Notification*Area' | Get-UIAButton -Name 'Safely*Remove*' | Invoke-UIAButtonClick;
Get-UIAWindow -Name Menu | Get-UIAMenuItem -Name Eject* | Invoke-UIAMenuItemClick;
 
К сожалению, локализовать этот код не легко - к примеру, automationId кнопки в первом случае 'item 1' (и кто гарантирует, что на другой день это не будет 'item 2' или 'item 3'). Так что иногда распознавалки картинок, возможно, рулят.

Upd: это отвечает на вопрос, как использовать UIAutomation.

Upd: Если хочется писать на компилируемом языке (да, бывает такая блажь - писать тесты не на динамических языках), можно а) скомпилить в dll б) скомпилить в exe (но C# тут весьма отдалённый получится, чисто запустить процесс :) в) запустить через ранспейс программно (см. много что - от MSDN до сорсов UIARunner.exe https://github.com/apetrovskiy/STUPS/blob/master/UIA/UIARunner/Program.cs или https://github.com/apetrovskiy/STUPS/blob/master/UIA/UIARunner/UIARunnerForm.cs на предмет использования PSTestRunner)