In today’s technology trend, every software application we use is made available either as a web application or mobile app. But there are lots of desktop applications still in use in large enterprises. To test these windows based applications we still largely rely on commercial tools like TestComplete, HP Unified Functional Tester, Coded UI, etc. With the rise in open source testing tools, we have seen tools like AutoIT, Sikuli coming up.

In this article, we would like to talk about a lesser-known open source testing tool for windows automation – Winium

Winium is an automation framework for windows platform. It is a free and open source tool based on Selenium.

Selenium, the widely used open source tool for the web application, provides support for Mobile Application using Appium. Earlier for Window Application automation, we had used some external tools like Sikuli, AutoIT etc. Now we have Winium to go with the Selenium bag.

Winium Supported Platforms:

  • Windows Desktop (WPF, WinForms) Apps,
  • Windows Store or Universal Apps for Windows Phone,
  • Windows Phone Silverlight Apps

Winium Supported Languages:

  • Java
  • Objective-C
  • JavaScript with Node.js
  • PHP
  • Python
  • Ruby
  • C#
  • Clojure, or Perl with the Selenium WebDriver API

Winium Test Framework:

  • JUnit
  • TestNG
  • PyUnit
  • NUnit

Working with Winium is pretty simple and easy if you already have experience with Selenium. In Selenium, for the web application, we use FireBug or FirePath to identify the element locators. Similarly, in Winium we can UISpy.exe or Inspect.exe (available by default in windows) to identify the element locators in Windows application.

Prerequisites to work with Winium:

  • Microsoft .NET Framework
  • Download Latest Eclipse
  • Create Maven Project
  • Download UISpy

Steps To Do:

Step 1: Add below dependency in pom.xml

<!– https://mvnrepository.com/artifact/com.github.2gis.winium/winium-webdriver –>

<dependency>

    <groupId>com.github.2gis.winium</groupId>

    <artifactId>winium-webdriver</artifactId>

    <version>0.1.0-1</version>

</dependency>

You can also download the dependency from below link:

https://mvnrepository.com/artifact/com.github.2gis.winium/winium-webdriver

Step 2: Download Winium.Desktop.Driver.exe.

https://github.com/2gis/Winium.Desktop/releases

Step 3: Once downloaded, launch the driver, it will open by default with port 9999 which acts as a server.

Internally this server will communicate through JSON Wireless Protocol

Step 4: Add TestNG dependency to run an application

<!– https://mvnrepository.com/artifact/org.testng/testng –>

<dependency>

<groupId>org.testng</groupId>

<artifactId>testng</artifactId>

<version>6.14.3</version>

<scope>test</scope>

</dependency>

Step 5: Create a sample Java Project and a class and use the below code to automate calculator

package com.winium.demo;

import java.net.MalformedURLException;

import java.net.URL;

import org.openqa.selenium.By;

import org.openqa.selenium.winium.DesktopOptions;

import org.openqa.selenium.winium.WiniumDriver;

public class Calculator {

public static void main(String[] args) throws MalformedURLException, InterruptedException {

DesktopOptions option = new DesktopOptions();

option.setApplicationPath(“C:\\Windows\\System32\\calc.exe”);

WiniumDriver driver = new WiniumDriver(new URL(“http://localhost:9999”), option);

Thread.sleep(5000);

driver.findElement(By.name(“One”)).click();

driver.findElement(By.name(“Plus”)).click();

driver.findElement(By.name(“Two”)).click();

driver.findElement(By.name(“Equals”)).click();

String output = diver.findElement(By.id(“CalculatorResults”)).getAttribute(“Name”);

System.out.println(“Result after addition is: “+output);

driver.quit();

}}

Winium seems to be quite promising for windows application automation. Even though it is in a nascent stage if the application test supports different platforms like web, mobile (ios, android, windows), windows desktop then Selenium + Appium + Winium will be a winning combination.

What do you think?

 

About Zuci

Zuci is revolutionizing the way software platforms are engineered with the help of patented AI and deep learning models.
Learn more about Zuci at www.zucisystems.com

About the authors

Santhiya is a Senior Software Development Engineer in Test. She has undertaken numerous onsite test automation projects and worked directly with customers to deliver best results.
Find her at Santhiya.

Abinaya is a Senior Software Development Engineer in Test. She aces the test automation domain with her experience in Testcomplete, Cucumber, Appium and many other tools.
Find her at Abinaya.