Windows Application Driver (WinAppDriver) With C# — Devstringx
What is Windows Application Driver (WinAppDriver)?
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 apps on Windows 10 PC.
How to Install & Run WinAppDriver?
- First Download the WinAppDriver installer from https://github.com/Microsoft/WinAppDriver/releases
- Run the installer on a Windows 10 machine where your windows application is to be tested.
- Enable Developer Mode in Windows settings
Open WinAppDriver.exe from the installation directory (C:\Program Files (x86)\Windows Application Driver)
After That, WinAppDriver will be running on the test machine listening to requests on the default IP address and port (127.0.0.1:4723).
Now you are ready to run any of your Tests Scripts.
Read Also:- Most Popular Tools for Automation Testing
Required Packages in Project’s Solutions
We need to add packages ‘Microsoft.WinAppDriver.Appium.WebDriver’ in the current solution from the Nugget as below I have attached the screenshot of the packages.
How to Inspect Element on Windows Application?
First, we need to Download the Win SDK file from https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/
By using ‘inspect.exe’ we can inspect the element present on windows application
FOR EXAMPLE, I HAVE WRITTEN A DEMO SCRIPT TO PERFORM ACTION ON THE OUTLOOK APP:
<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
<TestRunParameters>
<Parameter name="AppId" value="C:\Program Files\Microsoft Office\root\Office16\OUTLOOK.EXE"/>
<Parameter name="sessionSingletonUrl" value="http://127.0.0.1:4723"/> //When open WinAppDriver You will get this value.
</TestRunParameters>
</RunSettings>
using NUnit.Framework;
using OpenQA.Selenium.Appium.Windows;
using OpenQA.Selenium.Remote;
using System;
using System.Threading;
namespace WinAppDriver
{
internal class OutlookDemo
{
private static WindowsDriver<WindowsElement> session;
[Test]
public void OpenOutlook() {
DesiredCapabilities appCapabilities = new DesiredCapabilities();
appCapabilities.SetCapability("app", TestContext.Parameters["AppId"]); //Getting AppId from test.runsettings.
session = new WindowsDriver<WindowsElement>(new Uri(TestContext.Parameters["sessionSingletonUrl"]), appCapabilities);// Getting sessionSingletonUrl from test.runsettings
session.SwitchTo().Window(session.WindowHandles[0]);
session.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(15);
session.Manage().Window.Maximize();
session.FindElementByName("Home").Click();
session.FindElementByName("Send / Receive").Click();
session.FindElementByName("View").Click();
session.FindElementByName("Help").Click();
session.Close();
}
}
}
NOTE: Before executing this script you need to select test.runsettings to your current project and WinAppDriver should be open.
Windows Application Driver (WinAppDriver) Pros:
This is an open-source tool. It uses the web driver protocol. It’s free and developed by Microsoft. WinAppDriver can integrate with selenium and Appium projects in the C# language.
Conclusion:
WinAppDriver is a very easy-to-use free tool and it is the best option for Automation on Windows applications rather than a paid one, which is easy to integrate and implement with existing automation projects.
Originally published at https://www.devstringx.com on July 28, 2022