Skip to content

Sikuli Robot Framework Library provide keywords for Robot Framework to test UI through Sikuli.

License

Notifications You must be signed in to change notification settings

rbosse/robotframework-SikuliLibrary

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

62 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sikuli Robot Framework Library

Introduction

Sikuli Robot Framework Library provide keywords to test UI through Sikulix.

Keyword Documentation

Keywords

Overview

  • This library is implemented with Robot Framework Remote Library
  • Sikuli api is encapsulated as Robot keywords, and explored to clients with jrobotremoteserver
  • Client is implemented with python and use Robot remote library to communicate with server side
  • Users could implement their own clients with different languages which support xml rpc

Differences With Other Similiar Sikuli Libraries

  • Robot Remote Library technology is used, different client part program languages are supported
  • Do not plan to expose sikuli api to Robot Framework directly. All sikuli api are encapsulated as Keywords.
    • Wait functionality is added for each operations
       public void click(String image) throws Exception{
           wait(image, Double.toString(this.timeout));
           try {
               screen.click(image);
           }
           catch (FindFailed e) {
               capture();
               throw new ScreenOperationException("Click "+image+" failed"+e.getMessage(), e);
           }
       }
 * Keyword to handel similiar images issue, could check "click_in" test suite in demo folder to get details
```java
    public void clickIn(String areaImage, String targetImage) throws Exception {
        wait(areaImage, Double.toString(this.timeout));
        Match match = screen.find(areaImage);
        System.out.println(areaImage + " is found!");
        match.click(targetImage);
        capture(match.find(targetImage));
    }
  • Operating images could be shown in robot logs, easy to troubleshooting

Installation

Pip installation

*If target OS is Windows, could use pip to install directly

pip install robotframework-SikuliLibrary

*If target OS is Linux, please download linux version from pypi

Build With Maven

  • Clone this project, and execute maven package command
  • One zip file will be created in "target" folder, could unzip this file and add to PYTHONPATH
  • If want to installed to python, please execute
python setup.py install

###Note

  • For Linux, there are some dependencies need be installed, please check sikuli quick start to get more details.

Start Server Manually

SikuliLibrary contains a standalone jar file which could be started in command line. Sometimes user want to do test on different OS. The steps are:

  • Find SikuliLibrary.jar in "SikuliLibrary/lib" folder and upload to target OS.
  • Start jar with command
java -jar SikuliLibrary.jar  <port>  <captured_imagine_folder>
  • User could use different clients to connect to server and call keywords. For example Remote Library in robot framework.
Library        Remote        http://<ip>:<port>/

Example

Hello World Example

*** Settings ***
Documentation     Sikuli Library Demo
Test Setup        Add Needed Image Path
Test Teardown     Stop Remote Server
Library           SikuliLibrary

*** Variables ***
${IMAGE_DIR}      ${CURDIR}\\img

*** Test Cases ***
Windows Notpad Hellow World
    Open Windows Start Menu
    Open Notepad
    Input In Notepad
    Quit Without Save

*** Keywords ***
Add Needed Image Path
    Add Image Path    ${IMAGE_DIR}

Open Windows Start Menu
    Click    windows_start_menu.png

Open Notepad
    Input Text    search_input.png    notepad
    Click    notepad.png
    Double Click    notepad_title.png

Input In Notepad
    Input Text    notepad_workspace.png    Hello World
    Text Should Exist    Hello World

Quit Without Save
    Click    close.png
    Click    dont_save.png

Ruby Client Example

require "xmlrpc/client"
require "pathname"

client = XMLRPC::Client.new("127.0.0.1", "/", 10000)
client.call("get_keyword_names")
client.call("run_keyword", "addImagePath", [Pathname.new(File.dirname(__FILE__)).realpath.to_s+"/img"])
client.call("run_keyword", "click", ["windows_start_menu.png"])
client.call("run_keyword", "waitUntilScreenContain", ["search_input.png", "5"])
client.call("run_keyword", "input_text", ["search_input.png", "notepad"])
client.call("run_keyword", "click", ["notepad.png"])
client.call("run_keyword", "doubleClick", ["notepad_title.png"])
client.call("run_keyword", "click", ["close.png"])

Click In Example

*** Settings ***
Documentation     Sikuli Library Click In Example
Test Setup        Add Needed Image Path
Test Teardown     Stop Remote Server
Library           SikuliLibrary
Library           OperatingSystem

*** Variables ***
${IMAGE_DIR}      ${CURDIR}\\img

*** Test Cases ***
Click In Example
    Open Example UI
    Click Right OK Button
    Click Left OK Button

*** Keywords ***
Add Needed Image Path
    Add Image Path    ${IMAGE_DIR}

Open Example UI
    Run         chrome ${CURDIR}\\html\\click_in_demo.html

Click Right OK Button
    Click In        right_area.png      target.png

Click Left OK Button
    Click In        left_area.png      target.png

Start Server

java -jar SikuliLibrary.jar 10000 .

0 [main] INFO org.robotframework.remoteserver.RemoteServer  - Mapped path / to library com.github.rainmanwy.robotframework.sikulilib.SikuliLibrary.
1 [main] INFO org.robotframework.remoteserver.RemoteServer  - Robot Framework remote server starting
1 [main] INFO org.eclipse.jetty.server.Server  - jetty-7.x.y-SNAPSHOT
28 [main] INFO org.eclipse.jetty.server.handler.ContextHandler  - started o.e.j.s.ServletContextHandler{/,null}
129 [main] INFO org.eclipse.jetty.server.AbstractConnector  - Started SelectChannelConnector@0.0.0.0:10000
129 [main] INFO org.robotframework.remoteserver.RemoteServer  - Robot Framework remote server started on port 10000.

About

Sikuli Robot Framework Library provide keywords for Robot Framework to test UI through Sikuli.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages

  • Java 70.9%
  • Python 25.6%
  • Ruby 2.1%
  • HTML 1.4%