127 lines
3.3 KiB
Python
127 lines
3.3 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
McRogueFace Automation API Example
|
|
|
|
This demonstrates how to use the automation API for testing game UIs.
|
|
The API is PyAutoGUI-compatible for easy migration of existing tests.
|
|
"""
|
|
|
|
from mcrfpy import automation
|
|
import mcrfpy
|
|
import time
|
|
|
|
def automation_demo():
|
|
"""Demonstrate all automation API features"""
|
|
|
|
print("=== McRogueFace Automation API Demo ===\n")
|
|
|
|
# 1. Screen Information
|
|
print("1. Screen Information:")
|
|
screen_size = automation.size()
|
|
print(f" Screen size: {screen_size[0]}x{screen_size[1]}")
|
|
|
|
mouse_pos = automation.position()
|
|
print(f" Current mouse position: {mouse_pos}")
|
|
|
|
on_screen = automation.onScreen(100, 100)
|
|
print(f" Is (100, 100) on screen? {on_screen}")
|
|
print()
|
|
|
|
# 2. Mouse Movement
|
|
print("2. Mouse Movement:")
|
|
print(" Moving to center of screen...")
|
|
center_x, center_y = screen_size[0]//2, screen_size[1]//2
|
|
automation.moveTo(center_x, center_y, duration=0.5)
|
|
|
|
print(" Moving relative by (100, 100)...")
|
|
automation.moveRel(100, 100, duration=0.5)
|
|
print()
|
|
|
|
# 3. Mouse Clicks
|
|
print("3. Mouse Clicks:")
|
|
print(" Single click...")
|
|
automation.click()
|
|
time.sleep(0.2)
|
|
|
|
print(" Double click...")
|
|
automation.doubleClick()
|
|
time.sleep(0.2)
|
|
|
|
print(" Right click...")
|
|
automation.rightClick()
|
|
time.sleep(0.2)
|
|
|
|
print(" Triple click...")
|
|
automation.tripleClick()
|
|
print()
|
|
|
|
# 4. Keyboard Input
|
|
print("4. Keyboard Input:")
|
|
print(" Typing message...")
|
|
automation.typewrite("Hello from McRogueFace automation!", interval=0.05)
|
|
|
|
print(" Pressing Enter...")
|
|
automation.keyDown("enter")
|
|
automation.keyUp("enter")
|
|
|
|
print(" Hotkey Ctrl+A (select all)...")
|
|
automation.hotkey("ctrl", "a")
|
|
print()
|
|
|
|
# 5. Drag Operations
|
|
print("5. Drag Operations:")
|
|
print(" Dragging from current position to (500, 500)...")
|
|
automation.dragTo(500, 500, duration=1.0)
|
|
|
|
print(" Dragging relative by (-100, -100)...")
|
|
automation.dragRel(-100, -100, duration=0.5)
|
|
print()
|
|
|
|
# 6. Scroll Operations
|
|
print("6. Scroll Operations:")
|
|
print(" Scrolling up 5 clicks...")
|
|
automation.scroll(5)
|
|
time.sleep(0.5)
|
|
|
|
print(" Scrolling down 5 clicks...")
|
|
automation.scroll(-5)
|
|
print()
|
|
|
|
# 7. Screenshots
|
|
print("7. Screenshots:")
|
|
print(" Taking screenshot...")
|
|
success = automation.screenshot("automation_demo_screenshot.png")
|
|
print(f" Screenshot saved: {success}")
|
|
print()
|
|
|
|
print("=== Demo Complete ===")
|
|
|
|
def create_test_ui():
|
|
"""Create a simple UI for testing automation"""
|
|
print("Creating test UI...")
|
|
|
|
# Create a test scene
|
|
mcrfpy.createScene("automation_test")
|
|
mcrfpy.setScene("automation_test")
|
|
|
|
# Add some UI elements
|
|
ui = mcrfpy.sceneUI("automation_test")
|
|
|
|
# Add a frame
|
|
frame = mcrfpy.Frame(50, 50, 300, 200)
|
|
ui.append(frame)
|
|
|
|
# Add a caption
|
|
caption = mcrfpy.Caption(60, 60, "Automation Test UI")
|
|
ui.append(caption)
|
|
|
|
print("Test UI created!")
|
|
|
|
if __name__ == "__main__":
|
|
# Create test UI first
|
|
create_test_ui()
|
|
|
|
# Run automation demo
|
|
automation_demo()
|
|
|
|
print("\nYou can now use the automation API to test your game!") |