Sikuli GUI Automation Testing Tool – Beginner’s Guide Part #2

The most practical tutorials on Sikuli GUI automation testing tool:

In part-1 of this “introduction to Sikuli tutorial series”, we have discussed about Sikuli, how it works, and how to create a simple Sikuli project.

In this 2nd part, you are going to learn some advanced concepts like – how to create Sikuli maven project and how Sikuli can be used with Selenium WebDriver to automate web pages.

This part is essential because there is no built-in method to open a website/web application in Sikuli. So whenever you’re executing a Sikuli script, you need to make sure that the website is already opened in a browser. It is an overhead task.

To overcome this, Sikuli can be used together with Selenium WebDriver. Selenium contains a method to open a website in a browser. After opening the website, we are able to run Sikuli scripts on that website.

What You Will Learn:

What is covered in this Sikuli Tutorial#2:

Installing Eclipse Maven Plugin

Step #1:

Open Eclipse, Go to Help   -> Install a new Software. Click on “Add” button and add the following URL.



Click on “OK” button.

Step #2:

Check All the checkboxes listed, click “Next” and install the maven plugin.

(Click on image to enlarge)

Installing Apache Maven

Step #1:

Download latest version of maven from here.

Step #2:

Extract the downloaded zip file and put it under somewhere in your machine.

Copy the bin folder path of Maven, and append the path in the environment variable.

(It requires JAVA_HOME variable in the environment variable. Please set JAVA_HOME variable in your environment)

Step #3:

Check whether maven installed correctly, Open command prompt and type “mvn -version”. It should return something like this,

(Click on image to enlarge)

It indicates Maven successfully installed on your machine.

Install Sikuli Script Jar in Maven Repository

As I mentioned in part -1, we’ve already got sikuli-script.jar, next we need to install sikuli-script.jar in the maven repository.

By using the following command we can install sikuli-script.jar in the maven repository.

Mvn install: install-file -Dfile=D:\Jars\Sikuli-r930\win32\Sikuli-IDE\sikuli-script.jar -DgroupId=com.test.sikuli -DartifactId=sikuli -Dversion-1.0.1 -Dpackaging=jar

(Click on image to enlarge)

Creating Sikuli Maven Project

Step #1:

Open Eclipse and create new Maven Project.

Step #2:

Add the following dependencies in your POM file.


<dependency>
<groupId>com.test.sikuli</groupId>
<artifactId>sikuli</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
</dependency>

(Click on image to enlarge)

Step #3:

Create a package inside src/test/java and Create a class inside the package. Now you can start writing the Sikuli script inside this class.



Sikuli Example Program: Open a file in Windows Explorer

Step #1:

Create a Sikuli Maven Project, as explained above.

Step #2:

Take the screenshot of required elements and put it inside the Maven project.

– file.png

Step #3:

Create a class with name “Test1”, and Paste the following code inside the sikuli class.


package com.test;

import org.junit.Test;
import org.sikuli.script.FindFailed;
import org.sikuli.script.Screen;

public class Test1 {

@Test
public  void openFileTest() throws FindFailed, InterruptedException {
// TODO Auto-generated method stub
Screen s=new Screen();
s.find("file.png");
s.doubleClick("file.png");
System.out.println("File icon clicked");

}
} 

Executing Sikuli Maven Project from Command line

Step #1:

Open Command Prompt and cd to the project directory.

Step #2:

Execute the above project from a command prompt using the following command.

mvn clean test -Dtest=Test1

Selenium Vs Sikuli

Integrating Sikuli With Selenium WebDriver

Step #1:

Create a new Java Project in eclipse by clicking New -> Java project.

Step #2:

  1. Right-click on the Project Go to Build Path   -> Configure Build Path.
  2. Switch to Libraries Tab.
  3. Click on “Add External Jars” and Add Selenium library jars as well as Sikuli-scritp.jar

Step #3:

Create a package inside src/ folder and create a class under that package.

Step #4:

Take All required screenshot of web elements and save inside the project.

Step #5:

Copy the following code inside that class.


package com.test;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.sikuli.script.FindFailed;
import org.sikuli.script.Screen;

public class OnlinePainting {

public static void main(String[] args) throws FindFailed {
// TODO Auto-generated method stub

WebDriver driver=new FirefoxDriver();
WebDriverWait wait=new WebDriverWait(driver,20);
driver.manage().window().maximize();
driver.get("http://www.thecolor.com/Coloring/a-puppy-with-a-kitten.aspx");
Screen screen=new Screen();
screen.wait("1398665726055.png", 20);
screen.click("1398666382715.png");
screen.click("1398666248846.png");
screen.click("1398666729252.png");
screen.click("1398666188894.png");
screen.click("1398665763634.png");
screen.click("1398666592027.png");
screen.click("1398666610951.png");
screen.click("1398666308624.png");
screen.click("1398666326406.png");
screen.click("1398666570749.png");
screen.click("1398666703708.png");
screen.click("1398666382715.png");
screen.click("1398666857321.png");
screen.waitVanish("1398665763634.png");

}
} 

Step #6:

Right-click on the project, Select RunAs -> Java Application.

Before Execution:



After Execution:

Conclusion

With this, we are concluding our Sikuli tutorial series. Feel free to post your queries in comments.