Usage Examples

Selenium Example

python
from selenium import webdriver
from pyxelator import find, click, fill
import time

driver = webdriver.Chrome()
driver.get('https://example.com')
time.sleep(1)

# Login flow
if find(driver, 'login_button.png'):
    fill(driver, 'username.png', 'myuser')
    fill(driver, 'password.png', 'mypass')
    click(driver, 'submit.png')
    print("Logged in!")

driver.quit()

Playwright Example

python
from playwright.sync_api import sync_playwright
from pyxelator import find, click, fill
import time

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    page = browser.new_page()
    page.goto('https://example.com')
    time.sleep(1)

    # Same API!
    if find(page, 'login_button.png'):
        fill(page, 'username.png', 'myuser')
        fill(page, 'password.png', 'mypass')
        click(page, 'submit.png')
        print("Logged in!")

    browser.close()

Appium Example (Mobile)

python
from appium import webdriver
from appium.options.android.uiautomator2.base import UiAutomator2Options
from pyxelator import find, click, fill
import time

# Setup Appium
options = UiAutomator2Options()
options.udid = "your_device_id"
options.platform_name = "Android"
options.app_package = "com.example.app"
options.app_activity = "com.example.app.MainActivity"

driver = webdriver.Remote('http://127.0.0.1:4723', options=options)
time.sleep(2)

# Same API works for mobile!
if find(driver, 'login_button.png'):
    fill(driver, 'email_field.png', 'user@example.com')
    fill(driver, 'password_field.png', 'password123')
    click(driver, 'submit_button.png')
    print("Logged in!")

driver.quit()
Beta Feature: Appium support is in beta. Template matching works best with unique UI elements.

Pytest Integration

python
import pytest
from selenium import webdriver
from pyxelator import find, click, fill
import time

@pytest.fixture
def driver():
    driver = webdriver.Chrome()
    driver.maximize_window()
    yield driver
    driver.quit()

def test_login(driver):
    driver.get('https://example.com')
    time.sleep(1)

    assert find(driver, 'login_button.png') == True
    assert click(driver, 'login_button.png') == True
    assert fill(driver, 'email.png', 'test@example.com') == True