Katalon With Winium for Desktop Applications


#1

Hi Team,

I am able to integrate Winium with Katalon. It is working fine. Please refer the below Code and process to integrate.

Code :

import org.openqa.selenium.By  
import org.openqa.selenium.WebElement  
import org.openqa.selenium.winium.DesktopOptions  
import org.openqa.selenium.winium.WiniumDriver  
import java.net.MalformedURLException  
import java.net.URL  
WiniumDriver driver = null  
String appPath = "C:/windows/system32/calc.exe"  
DesktopOptions option = new DesktopOptions()  
option.setApplicationPath(appPath)  
option.setDebugConnectToRunningApp(false)  
option.setLaunchDelay(2)  
driver = new WiniumDriver(new URL("http://localhost:9999"),option)  
Thread.sleep(1000)  
WebElement window = driver.findElementByClassName("CalcFrame")  
WebElement menuItem = window.findElement(By.id("MenuBar")).findElement(By.name("View"))  
menuItem.click()  
driver.findElementByName("Scientific").click()  
window.findElement(By.id("MenuBar")).findElement(By.name("View")).click()  
driver.findElementByName("History").click()  
window.findElement(By.id("MenuBar")).findElement(By.name("View")).click()  
driver.findElementByName("History").click()  
window.findElement(By.id("MenuBar")).findElement(By.name("View")).click()  
driver.findElementByName("Standard").click()  
driver.findElementByName("4").click()  
driver.findElementByName("Add").click()  
driver.findElementByName("5").click()  
driver.findElementByName("Equals").click()  
driver.close()

Download Jar files from the below link and add to external libraries.

https://jar-download.com/?search_box=com.github.2gis.winium


Katalon for Desktop apps?
#2

Hi Veera,

Thanks for the post. Should I add all the Jars or Specific Jars to Katalon.

If Specific … Please let me know the Jar Names.


#3

Hi Veera,

That link doesn’t work for me. Is there any alternative link?

Thanks!


#4

https://jar-download.com/artifacts/com.github.2gis.winium


#5

You need to import all jars and you also need to start Winium.Desktop.Driver.exe (not included with jars) and you can download it from official Git location.

More info on Winium Desktop (needed for this example)


Download location:

Also here is the link to overall Winium platform (Desktop/Mobile)


#6

Somebody, perhaps you Rasko, should do a single article explaining all the details and all the pitfalls of using Winium in Katalon. Post it in the Tips and Suggestions forum.


#7

This is awesome!

Thanks @veera palla


#8

I am getting following error on windows10 :

10-13-2018 10:25:28 AM - [START] - Start action : Statement - window = driver.findElementByClassName(“CalcFrame”)

10-13-2018 10:25:40 AM - [END] - End action : Statement - window = driver.findElementByClassName(“CalcFrame”)

10-13-2018 10:25:40 AM - [ERROR] - Test Cases/tc1 FAILED because (of) org.openqa.selenium.NoSuchElementException: Element cannot be found (WARNING: The server did not provide any stacktrace information)

Command duration or timeout: 0 milliseconds


#9

I have suggested Edit this page by :

https://github.com/katalon-studio/docs/pull/32/commits/d78ba59eeef683981ced6c81d2a2a264be29445b

The final version with steps to get it working on windows 10 :

Steps :

  1. Download and extract Winium.Desktop.Driver.zip from https://github.com/2gis/Winium.Desktop/releases
  2. Run Winium.Desktop.Driver.exe
  3. Download the jar package.
  4. From Katalon studio --> Project settings --> External libraries, add two jars winium-elements-desktop-0.2.0-1.jar and winium-webdriver-0.1.0-1.jar (Refer : https://i.imgur.com/haDI84P.png)
  5. Use the example below to import the Winium driver and use script into Katalon Studio.

This example works perfect in windows 10.

import static com.kms.katalon.core.checkpoint.CheckpointFactory.findCheckpoint
import static com.kms.katalon.core.testcase.TestCaseFactory.findTestCase
import static com.kms.katalon.core.testdata.TestDataFactory.findTestData
import static com.kms.katalon.core.testobject.ObjectRepository.findTestObject
import com.kms.katalon.core.checkpoint.Checkpoint as Checkpoint
import com.kms.katalon.core.checkpoint.CheckpointFactory as CheckpointFactory
import com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords as MobileBuiltInKeywords
import com.kms.katalon.core.mobile.keyword.MobileBuiltInKeywords as Mobile
import com.kms.katalon.core.model.FailureHandling as FailureHandling
import com.kms.katalon.core.testcase.TestCase as TestCase
import com.kms.katalon.core.testcase.TestCaseFactory as TestCaseFactory
import com.kms.katalon.core.testdata.TestData as TestData
import com.kms.katalon.core.testdata.TestDataFactory as TestDataFactory
import com.kms.katalon.core.testobject.ObjectRepository as ObjectRepository
import com.kms.katalon.core.testobject.TestObject as TestObject
import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords as WSBuiltInKeywords
import com.kms.katalon.core.webservice.keyword.WSBuiltInKeywords as WS
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUiBuiltInKeywords
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI
import internal.GlobalVariable as GlobalVariable
import org.openqa.selenium.By as By
import org.openqa.selenium.WebElement as WebElement
import org.openqa.selenium.winium.DesktopOptions as DesktopOptions
import org.openqa.selenium.winium.WiniumDriver as WiniumDriver
import java.net.MalformedURLException as MalformedURLException
import java.net.URL as URLWiniumDriver driver = nullString appPath = 'C:/windows/system32/calc.exe'DesktopOptions option = new DesktopOptions()option.setApplicationPath(appPath)option.setDebugConnectToRunningApp(false)option.setLaunchDelay(2)driver = new WiniumDriver(new URL('http://localhost:9999'), option)Thread.sleep(1000)driver.findElement(By.name('Seven')).click()driver.findElement(By.name('Plus')).click()driver.findElement(By.name('Eight')).click()driver.findElement(By.name('Equals')).click()driver.close()

#10

Screencast : https://youtu.be/o8DNBFaevh4

Please let me know how to share this video in community


#11

Hello good morning I could not perform the desktop automation procedure, how can I make present error trying to generate via script


#12

satya agrawal said:

Screencast : https://youtu.be/o8DNBFaevh4

Please let me know how to share this video in community

Hello good morning I could not perform the desktop automation procedure, how can I make present error trying to generate via script


#13

HI Veera,

I tried the same in my machine. For the first two iterations it worked fine. But now the exception was “httphostconnection Exception”. Could any one help me in this regard.


#14

Hi Guys,

Thanks for this thread.
I have one question. I am trying to find the background color of the button.
using
String color =driver.findElement(By.name(‘Eight’)).getCssValue(‘color’)
i also tried
String color =driver.findElement(By.name(‘Eight’)).getCssValue(‘background-color’)

and i am getting the following error.

Reason:
org.openqa.selenium.UnsupportedCommandException: ‘getElementValueOfCssProperty’ is not valid or implemented command. (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds.

in my application finding colors of button is the most important thing and i want to automate that functionality.
Any help would be appreciated.


#15

Hi Guys,

Thanks for this thread.

I am trying to find button color using :
String color =driver.findElement(By.name(‘Eight’)).getCssValue(‘color’)
i also tried

String color =driver.findElement(By.name(‘Eight’)).getCssValue(‘background-color’)

and i am getting the following issue:
Reason:
org.openqa.selenium.UnsupportedCommandException: ‘getElementValueOfCssProperty’ is not valid or implemented command. (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 0 milliseconds

In my desktop application finding color of a button is very important and i need to automate that functionality.
Can you please help me in this? any help would be appreciated.


#16

Hi,

I have done that Winium exe will start every time to different port
public class testWiniumClass {

@Keyword
public void testWiniumExe(){

	WiniumDriver d;

	Random rand = new Random(System.currentTimeMillis()); 
	int port = rand.nextInt((9999 - 9000) + 1) + 9000;

	DesktopOptions options = new DesktopOptions();
	options.setApplicationPath("C:\\Windows\\System32\\calc.exe");
	String WiniumEXEpath = "C:\\KatalonStudio\\DataDrivenTestMaster\\Winium.Desktop.Driver.exe";
	File file = new File(WiniumEXEpath);
	if (! file.exists()) {
		throw new IllegalArgumentException("The file " + WiniumEXEpath + " does not exist");
	}
	Runtime.getRuntime().exec(file.getAbsolutePath()+" --port "+port);

	try {
		d = new WiniumDriver(new URL("http://localhost:"+port),options);
	} catch (MalformedURLException e) {
		e.printStackTrace();
	}

	Thread.sleep(2000);
	d.findElement(By.name("Seitsemän")).click();
	d.findElement(By.name("Plus")).click();
	d.findElement(By.name("Kahdeksan")).click();
	d.findElement(By.name("On yhtä suuri kuin")).click();
	Thread.sleep(2000);
	String output = d.findElement(By.id("CalculatorResults")).getAttribute("Name");
	System.out.println("Result after addition is: "+output);
	d.findElement(By.name("Sulje Laskin")).click();