Skip to main content

oculix (Python)

Python wrapper for OculiX — visual automation for the real world.

Install

pip install oculix-operix

Requirements: Python 3.8+, Java 11+ on PATH (Eclipse Temurin or Azul Zulu).

The OculiX engine (~200 MB fat JAR) is downloaded on first use into ~/.oculix/lib/.

Quickstart

from oculix import Screen, App, VNCScreen

screen = Screen()
screen.click("login.png")
screen.type("admin")
screen.click("submit.png")
screen.wait("dashboard.png", 10)

# Open a desktop app
calc = App.open("calc")
screen.click("button_7.png")

# Drive a remote VNC display
vnc = VNCScreen.start("10.0.0.42", 5900, "", 1920, 1080)
vnc.click("logo.png")
vnc.stop()

With pytest

import pytest
from oculix import Screen, App

@pytest.fixture
def calc():
    a = App.open("calculator")
    yield a
    a.close()

def test_addition(calc):
    s = Screen()
    s.click("button_7.png")
    s.click("button_plus.png")
    s.click("button_3.png")
    s.click("button_equals.png")
    assert s.exists("result_10.png")

License

MIT

Java API parity

This fork exposes the complete pinned Oculix 4.0.0 public method surface: 211 public types with named Python methods, constructor/field access and every Java overload's arguments. from oculix import Screen, OCR, Pattern stays unchanged. Every class is also available through oculix.java; nested classes keep names such as OCR.Options and OCR.PSM.

from oculix import Screen, Pattern, Match, OCR, Location, JavaCallback, ObserverCallBack

screen = Screen()
match = screen.find(Pattern("button.png").similar(0.8))
assert isinstance(match, Match)
match.click()
screen.type("hello", 0)

options = OCR.Options().language("eng").psm(OCR.PSM.SINGLE_LINE)
text = OCR.readText("button.png", options)

# Ambiguous Java overloads can be selected explicitly.
options.psm.overload("org.sikuli.script.OCR$PSM")("SINGLE_LINE")

exists() returns Match or None, matching Java; truth checks continue to work. Java interface callbacks accept JavaCallback(interface_name, handler) and observer methods accept a Python function directly. Arrays/collections become Python sequences; maps become dictionaries; Java iterators support iteration.

This distribution uses the matching 1.1.0 JVM bridge from ajayrakde/Operix. Do not mix it with the older upstream bridge. It occupies the same oculix import namespace as upstream, so install only one of the two distributions in a virtual environment. See implementation and validation.

Metadata

Release files for oculix-operix 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for oculix-operix 1.1.0
File Size Uploaded
oculix_operix-1.1.0.tar.gz 358.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for oculix-operix 1.1.0
File Interpreter ABI Platform
oculix_operix-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 712.4 kB

Release files / oculix_operix-1.1.0.tar.gz

Download URL oculix_operix-1.1.0.tar.gz
Size 358.6 kB
Tags Source
SHA-256 checksum
How to use checksums
e99547b41a53d0a43c8932cf82fc63bf4989f67d7f67d17c090cb92b90ce66d5
BLAKE2b-256 checksum
How to use checksums
535254cf89a80de6af813c61633d14843a99c8b60820f6b31a88f3b40defabec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / oculix_operix-1.1.0-py3-none-any.whl

Download URL oculix_operix-1.1.0-py3-none-any.whl
Size 353.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5ad07f816c1aa0f69148e9aeb9a23f1a02816da7233cb2552dde2980f584d0bd
BLAKE2b-256 checksum
How to use checksums
de976ce2d1d8f66a7d90079117139688abb02d4ec3d1868962e870639a2def43
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

1.1.1

2 release files

This release

1.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page