Skip to main content

Working with Sikuli

 

Sikuli depends on processing of images and  can automate flash object and desktop application 

It  is mainly used for interacting with elements of webpages and handling windows based popups Sikuli uses the technique of "Image Recognition" and "Control GUI" to interact with elements of web pages and windows popups, all web elements are  taken as image and stored inside project.

1. if you want to upload a desktop file/image on the website.

2. You can run and change setting on your YouTube channel

add dependency of Sikuli in your POM  file and Sikuli jar will be added in you Maven dependencies 

<dependency>
    <groupId>org.sikuli</groupId>
    <artifactId>sikuli-api</artifactId>
    <version>1.2.0</version>
</dependency>

Automating Flash objects

Let's take example of automating a Youtube video using Sikuli. after opening the video lets suppose you want to click on Mute button then press stop and then go to setting and change video quality.



you can also add it manually by right click on project  Build path->Configure Build path->Add external Jar









In order to do this first take a snapshot of all mention buttons, copy all the images  add it in your project .



After adding all the images in the project



code for Sikuli

public class Sikuli {

@Test

public void test() throws SikuliException

{

    System.setProperty("Webdriver.chrome.driver","chromedriver");

WebDriver driver = new ChromeDriver();

   driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

   driver.get("https://www.youtube.com/watch?v=569qoURhXoY");

   // create object of screen class

   Screen s = new Screen(); 

   //create object of pattern class

   

   

   Pattern Pause1 =new Pattern("Mypause.png");

   //wait till the image is visible

   s.wait(Pause1,2000);

   s.click();

   s.click();

   driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);


   

   Pattern Play1 = new Pattern("Myplay.png");

   s.wait(Play1,2000);

   s.click();

   s.click();

   driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);


    

   Pattern vol1 = new Pattern("Myvolume.png");

   s.wait(vol1,2000);

   s.click();

   s.click();

   driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);

 

   Pattern set1 = new Pattern("Mysetting.png");

   s.wait(set1, 2000);

   s.click();

   s.click();

   driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS);

  

   Pattern qua1 = new Pattern("Auto1080p.png");

   s.wait(qua1,2000);

   s.click();

   s.click();

   driver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);

  

   Pattern qua2 = new Pattern("144p.png");

   s.wait(qua2,2000);

   s.click();

   s.click();

}

}





Uploading a file using Sikuli

Open nauckri.com and click on uploading a file




All the images are saved at location Users\\priyankac\\Desktop\\Screenshot2


public class Sikuliupload {

@Test

public void test() throws SikuliException

{

    System.setProperty("Webdriver.chrome.driver","chromedriver");

WebDriver driver = new ChromeDriver();

   driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

   driver.get("https://www.naukri.com");

driver.manage().window().maximize();

driver.findElement(By.xpath("//div[@class='wdgt-upload-btn']/label")).click();

driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);

//once "upload cv" is clicked  a new window will open to to identify the window take screenshot where the path is provided  and save it in below path

String imageFilepath = "Users\\priyankac\\Desktop\\Screenshot2\\";

//where the file to be uploaded location is present

String inputFilepath ="Users\\priyankac\\Desktop\\Screenshot2\\";

Screen sc = new Screen();

//search image

Pattern file = new Pattern(imageFilepath +"search.docx");

//open image

Pattern OB = new Pattern(imageFilepath +"OPEN.png");

sc.wait(file,20);

//file to be uploaded is pc.docx

sc.type(file,inputFilepath+"pc.docx");

// to click on open button so that file gets uploaded

sc.click(OB);

}

}





Comments

Popular posts from this blog

Cucumber - Execution of test cases and reporting

Before going through this blog please checkout blog on   Cucumber Fundamentals Cucumber is testing tool which implements BDD(behaviour driven development).It offers a way to write tests that  anybody can understand, regardless of there technical knowledge. It users Gherkin (business readable language) which helps to  describe behaviour without going into details of implementation It's helpful for  business stakeholders who can't easily read code ( Why cucumber tool,  is  called  cucumber , I have no idea if you ask me I could have named it "Potato"(goes well with everything and easy to understand 😂) Well, According to its founder..... My wife suggested I call it  Cucumber  (for no particular reason), so that's how it got its  name . I also decided to give the Given-When-Then syntax a  name , to separate it from the  tool . That's why it's  called  Gherkin ( small variety of a cucumber that's been pickled. I...

Automating Flipkart via selenium

                                            Hi Folks, we are automating a flipkart site where you will see how to search and filter the product you choose without logging in . import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.support.ui.Select; import org.testng.annotations.Test; public class flipkart { WebDriver driver ; @Test       public void test()       {   System.setProperty( "Webdriver.chrome.driver" , "chromedriver" );     WebDriver driver = new ChromeDriver();   driver .manage().timeouts().implicitlyWait(5, TimeUnit. SECONDS );   driver .manage().window().maximize();          driver .get( "https://www.flipkart.com" );   ...

Cucumber Datatable testing without using scenario outline and Issues

  Before going through this blog please visit blog The issue you might encounter while running cucumber project- 1.  you have created the cucumber all file in src/test/java and you are trying to  move it in another folder transition might not be smooth, It will give error one fix will led to other.(depends on the setup) 2. If on running a feature file and successfully creating a stepdef file, If application still says that  few steps are still needs to be implemented or all of them(not detecting creation of step definition) then there is a high chance you have mistakenly wrote some other annotation in stepdef when compares to you feature file eg:- feature file @And ( "^user close browser$" ) public   void  user_close_browser()  throws  Throwable { Stepdef:-             @Then ( "^user close browser$" ) public   void  user_close_browser()  throws  Throwable { driver .quit(); 3. Duplicate S...