pywinauto vs. FlaUI pro automatizaci Windows UI
pywinauto i FlaUI jsou open-source nástroje pro ovládání uživatelského rozhraní ve Windows. Nevybírají se však pouze podle seznamu podporovaných technologií. Důležité je, co nástroj vidí v konkrétní aplikaci, jaký jazyk používá tým a jak bude testovací sada nasazena a udržována.
Proč samotný název technologie nestačí
Dvě aplikace vytvořené ve WPF mohou být z hlediska automatizace zcela odlišné. Jedna používá standardní ovládací prvky se stabilními identifikátory, druhá vlastní tabulky a grafické komponenty, které ve stromu Windows UI Automation neposkytují potřebné informace.
Pokud tým vybere nástroj bez krátkého technického ověření, problémy se obvykle projeví až u náročnějších scénářů. Test nedokáže jednoznačně najít prvek, pracuje s pořadím řádků nebo se musí opírat o obrázky a souřadnice. Výsledkem je nákladná údržba bez ohledu na zvolený framework.
Kdy dává smysl pywinauto
pywinauto se používá z Pythonu a nabízí dva hlavní způsoby přístupu k aplikaci: klasické rozhraní Win32 a Microsoft UI Automation. To je praktické u starších programů Win32, jednodušších aplikací WinForms i u moderního rozhraní, které zpřístupňuje prvky přes UI Automation.
Je vhodnou volbou zejména tehdy, když:
- tým už používá Python pro testy, nástroje nebo zpracování dat;
- je třeba kombinovat ovládání oken s kontrolou souborů, databáze či API;
- aplikace obsahuje starší prvky Win32;
- má být testovací kód snadno přenositelný mezi projekty v Pythonu.
Projekt pywinauto je dostupný pod licencí BSD 3-Clause.
Kdy dává smysl FlaUI
FlaUI je knihovna pro .NET, která zpřístupňuje obě varianty Microsoft UI Automation pomocí API přirozeného pro C#. Hodí se týmům, které vyvíjejí v .NET, chtějí využívat jeho typový systém a potřebují podrobněji pracovat s vlastnostmi prvků Windows aplikace.
Je vhodnou volbou zejména tehdy, když:
- testy bude udržovat tým pracující v C# nebo .NET;
- aplikace je postavena na WPF nebo WinForms a prvky jsou dobře viditelné v UI Automation;
- řešení potřebuje přímý přístup k možnostem UIA2 nebo UIA3;
- testovací infrastruktura už používá knihovny a nástroje .NET.
FlaUI je dostupná pod licencí MIT. U žádného z těchto nástrojů však neplatí, že bude automaticky stabilnější pro každou aplikaci.
Jak se rozhodnout bez zbytečného rizika
Nejprve pomocí inspekčního nástroje zkontrolujeme strom prvků, názvy, typy a identifikátory na jedné klíčové obrazovce. Potom v obou relevantních kandidátech ověříme krátký scénář: spuštění aplikace, vyplnění formuláře, uložení a kontrolu výsledku. Pilot musí zahrnovat také jeden složitější prvek, například tabulku nebo vlastní dialog.
Porovnáváme čas implementace, čitelnost testu, možnosti diagnostiky a chování při opakovaném běhu. U aplikace postavené na Electronu zvážíme místo obou nástrojů Playwright; jeho podpora Electronu je však experimentální a vyžaduje samostatný pilot. Více vysvětlujeme v článku Jak testovat Electron aplikaci.
Co tím získáte
Nástroj bude odpovídat aplikaci i lidem, kteří ho mají udržovat. Stabilní identifikátory a společné komponenty omezí počet míst, která je třeba opravit po změně rozhraní. Open-source základ navíc ponechá testovací kód pod kontrolou vašeho týmu a bez závislosti na jediném dodavateli.
Další krok
Vyberte jeden kritický scénář a zkontrolujte, zda jsou jeho prvky viditelné ve Windows UI Automation. Teprve výsledek tohoto pilotu by měl rozhodnout mezi pywinauto, FlaUI nebo kombinovaným přístupem. U WPF a WinForms pomůže také přehled možností a omezení jejich automatizace.