Skip to main content

pytest-vnc: capture screen and send keyboard & mouse

https://img.shields.io/badge/source-github-orange https://img.shields.io/pypi/v/pytest-vnc?style=flat-square

pytest-vnc implements a VNC client in pure Python. It works on Mac, Linux and Windows. Use the vnc fixture to capture screenshots and send keyboard & mouse from your pytest tests:

from pytest_vnc import Rect, Point


def test_thing(vnc):
    # Screenshot
    print(vnc.rect.width, vnc.rect.height)
    pixels = vnc.capture()  # rgba numpy array of entire screen
    pixels = vnc.capture(Rect(x=100, y=0, width=50, height=75))
    # to use PIL/pillow:
    # image = Image.fromarray(pixels)

    # Keyboard input
    vnc.write('hi there!')  # keys are queued
    vnc.press('Ctrl', 'c')  # keys are stacked
    with vnc.hold('Ctrl'):
        vnc.press('Esc')

    # Mouse input
    vnc.move(Point(100, 200))
    vnc.click()
    vnc.double_click()
    vnc.middle_click()
    vnc.right_click()
    vnc.scroll_up()
    vnc.scroll_down(repeat=10)
    with vnc.drag():
        vnc.move(Point(300, 400))
    with vnc.middle_drag():
        vnc.move(Point(500, 600))
    with vnc.right_drag():
        vnc.move(Point(700, 800))

Installation

This package requires Python 3.7+.

Install pytest-vnc by running:

pip install pytest-vnc

Configuration

The following configuration options can be set in pytest.ini:

vnc_host

VNC hostname (default: localhost)

vnc_port

VNC port (default: 5900)

vnc_speed

VNC interactions per second (default: 20)

vnc_timeout

VNC connection timeout in seconds (default: 5)

vnc_pixel_format

VNC colour channel order (default: rgba)

vnc_user

VNC username (default: env var: PYTEST_VNC_USER or current user)

vnc_passwd

VNC password (default: env var: PYTEST_VNC_PASSWD)

The following attributes can be set on the vnc object:

speed

Interactions per second (default: 20)

sleep

Callable that accepts a duration in seconds and waits for that long (default: time.sleep())

Metadata

Release files for pytest-vnc 2.0.0

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

Built distribution (wheel)

Table of built distributions (wheels) for pytest-vnc 2.0.0
File Interpreter ABI Platform
pytest_vnc-2.0.0-py3-none-any.whl Python 3 none any Details

Release files / pytest_vnc-2.0.0-py3-none-any.whl

Download URL pytest_vnc-2.0.0-py3-none-any.whl
Size 18.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
22e8610244f2762fcec6b204c6a39e8b85eb1fe1e23d7f8c6c2cb5100f1c1ae8
BLAKE2b-256 checksum
How to use checksums
2e380d6b73ab9c640f097e1dfda3003e38ce03675e0a4c19b2bfd2aa180ae6d1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.10.4

Release history Release notifications | RSS feed

This release

2.0.0 This release

1 release file

1.1.1

1 release file

1.1.0

1 release file

1.0.1

1 release file

1.0.0

1 release file

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