So, I'm a new(ish) QA automation intern at my company. Since I got in, I've been researching different tools and methods of automation. We have a web service that we can automate just fine. The thing is, there is also a windows application that needs to be automated for QA as well. I've looked into a framework called Winium. However, in order to select specific elements, you need to use some sort of selector and the application doesn't show up with any way to get selectors. I used the Microsoft application "Inspect.exe" but the app came up with nothing even though inspect worked on other apps. Is there some app or framework that can help me? Or, am I just doing it wrong? Thanks in advance for any answers!
Asked
Active
Viewed 8,340 times
2
-
what is the windows application written in? Perhaps it does not support the objects that Winium and Inspect are looking for. Have you asked the developers for their suggestions? – Breaks Software Dec 11 '19 at 18:09
-
That's a good question. I have been trying to get in contact with the devs for the desktop app, but they aren't very responsive. I haven't asked anyone about what it was written with so that might be a good question for my manager or one of the devs here – jalbr98 Dec 11 '19 at 18:17
-
You could take a look at Appium. – AndiCover Dec 11 '19 at 18:17
-
Is Appium used for mobile apps? I need something for a desktop application – jalbr98 Dec 11 '19 at 18:24
-
Does the application come with any kind of COM (formerly OLE) API, or any other way to remotely control it? – B. Go Dec 11 '19 at 19:30
-
For automating windows applications have a look at [UIPath](https://www.uipath.com/) – strattonn Dec 11 '19 at 20:23
-
If `Inspect.exe` can't see the elements, you're out of luck for many open source tools. Which GUI framework it is built on? – Vasily Ryabov Dec 12 '19 at 09:51
2 Answers
5
To automate desktop applications there are a few great choices available as follows:
- UiPath Studio software solution allows automating repetitive office tasks.
- WinAppDriver is a service to support Selenium-like UI Test Automation on Windows Applications. This service supports testing Universal Windows Platform (UWP), Windows Forms (WinForms), Windows Presentation Foundation (WPF), and Classic Windows (Win32) apps on Windows 10 PCs.
- AutoIT is a freeware BASIC-like scripting language designed for automating the Windows GUI and general scripting. It uses a combination of simulated keystrokes, mouse movement and window/control manipulation in order to automate tasks in a way not possible or reliable with other languages (e.g. VBScript and SendKeys). AutoIt is also very small, self-contained and will run on all versions of Windows out-of-the-box with no annoying “runtimes” required.
- Winium is an automation framework for Windows platforms. It is opensource and is Selenium-based.
- TestStack.White is a framework for automating rich client applications based on Win32, WinForms, WPF, Silverlight and SWT (Java) platforms. It is .NET based and does not require the use of any proprietary scripting languages. Tests/automation programs using White can be written with whatever .NET language, IDE and tools you are already using. White provides a consistent object-oriented API, hiding the complexity of Microsoft's UIAutomation library (on which White is based) and windows messages.
- LDTP (Linux Desktop Testing Project) is a Cross Platform GUI Test Automation tool.
- SikuliX automates anything you see on the screen of your desktop computer running Windows, Mac or some Linux/Unix.
- Pywinauto is a GUI automation library written in pure Python and well developed for Windows GUI. At its simplest it allows you to send mouse and keyboard actions to dialogs and controls on both Windows and Linux, while more complex text-based actions are supported on Windows only so far
- Robot Class / Win.form Class: These tools are distinctively different than the rest, in the way that they aren’t directly destined as test automation tools for desktop applications, but act as classes to simulate activities of the keyboard and mouse. Whereas, the Robot Class could be used with Java and Win.form is for .Net.
You can find some relevant discussions in:

undetected Selenium
- 183,867
- 41
- 278
- 352
-
1Personally I use `WinAppDriver` and it feels very similar to using other Selenium tools such as `Appium` and `ChromeDriver`. There's a bit more set up to get it working but overall it works well, and the GitHub project seems to be active and well-maintained. – CEH Dec 11 '19 at 22:16
1
You can go look into WinAppDriver (Link) It supports good amount of APIs that you can use (API)
If you are comfortable with C# then WinAppDriver is a good option.
You can also think about using PyWinAuto (Link) if you are more into Python.
As you mention, finding window elements based on any unique attribute is challenging when it comes to Desktop Automation. However, you can check THESE tools to inspect desktop elements.

Ayaz
- 249
- 1
- 2
- 11