Git Product home page Git Product logo

robotframework-sikulilibrary's Introduction

Sikuli Robot Framework Library

Introduction

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

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 [email protected]:10000
129 [main] INFO org.robotframework.remoteserver.RemoteServer  - Robot Framework remote server started on port 10000.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.