Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tito/automate
Kivy automation for screenshot (unittest later)
https://github.com/tito/automate
Last synced: 20 days ago
JSON representation
Kivy automation for screenshot (unittest later)
- Host: GitHub
- URL: https://github.com/tito/automate
- Owner: tito
- License: mit
- Created: 2015-08-30T17:16:17.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2022-06-06T15:37:19.000Z (over 2 years ago)
- Last Synced: 2024-10-16T12:38:17.673Z (about 1 month ago)
- Language: Python
- Size: 7.81 KB
- Stars: 0
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Automate
Kivy automation, currently used to automate screenshots on various devices at
specific places.# Installation
pip install kivy-automate
# Usage
There is 2 part of the software: a server and a client. The server must be
installed into your application, and then you can use the client to communicate
with it.## Install the server into your application
Just run this command to create an `automateserver.py` file that you can import:
python -m automate.install
Then, in your main.py, just import `automateserver` when you want to start the
server automation asynchronously:import automateserver
## Use the client
It is as simple as:
from automate.client import *
connect()
wait("app.screen_manager.current == 'welcome'")
wait("app.screen_manager.current_screen.progression == 1")
screenshot()
quit()This example will:
1. connect to the first started application, or wait the application to start
2. wait for our screen manager to show the "welcome" screen
3. wait the transition to be finished
4. at this point, a screenshot will be done
5. and the application will quit.# Commands
#### connect(host="localhost", port=7777, timeout=10)
Connect to the specified host / port. It will wait at maximum 10 seconds before
going to timeout.connect("192.168.1.6", timeout=60)
### wait(cond, timeout=-1)
Wait for a condition to be True, or break when the timeout happen. The only
available symbol in the condition globals() is the current running application
instance, accessible from `app` keyword. If the condition have an exception
while running, it will wait 100ms before retrying.So no error will be throw if you don't write a valid condition, the only way to
get out is either the condition happen, either the timeout happen.wait("app.screen_manager.current == 'welcome'")
### execute(cmd)
Execute a python statement in the application context. The only available symbol
in the cmd globals() is the current running application instance, accessible
from `app` keyword.execute("app.screen_manager.current = 'credits'")
### screenshot(name="screenshot", suffix=None, outdir=None)
Take a screenshot of the current displayed window. The screenshot will be saved into `outdir` (current directory if None), with the name of `{name}{suffix}.png`.
Care, it will replace any existing filename.screenshot("welcome")
### quit()
Quit the application. This is a shortcut to calling
`App.get_running_app().stop()`.### spawn(...)
Context manager that can be used to run your application multiple times, like:
for screen in ("onex", "droid2", "ipad"):
with spawn("python", "main.py", "-m", "screen:{}".format(screen)):
connect()
wait()
screenshot("startup", screen)
wait("app.screen_manager.current == 'welcome'")
screenshot("welcome", screen)
quit()