Vizion
RPA em Python para página no navegador e tela do Windows. Você aponta o alvo — recorte PNG, palavra visível ou seletor Selenium — e o Vizion tenta achar: primeiro no DOM, depois por imagem, depois por OCR.
from vizion import Bot
bot = Bot() # área de trabalho
# bot = Bot(webdriver.Chrome()) # Chrome já aberto
bot.click(image="ok.png", timeout=10)
bot.click(text="Salvar", sendtext="{enter}")
bot.click(anchor="linha.png", target="editar.png")
bot.wait(image="spinner.png", timeout=30, gone=True)
bot.keyboard("Ctrl+S")
print(bot.result())
Código em inglês (click, timeout, image). Só este README está em português.
Instalação
pip install pyvizion
O pacote no PyPI chama-se pyvizion; no código você continua com from vizion import Bot.
Sobe Selenium, OpenCV, EasyOCR, Tesseract (wrapper), PyAutoGUI, mss e, no Windows, pywin32. O executável do Tesseract no sistema continua sendo um requisito do SO se você for usar esse backend.
Como o alvo é encontrado
No navegador a ordem é:
- seletor DOM (
by+value) - texto visível no DOM
- iframe / shadow DOM
- recorte OpenCV (várias escalas, HiDPI)
- bordas Canny (tema claro/escuro)
- ORB + homografia
- OCR (EasyOCR, com Tesseract de reserva)
- scroll da página e nova passada
No desktop os passos de DOM somem: recorte → Canny → ORB → OCR.
O clique no browser usa coordenada CSS (PNG vs innerWidth), não pixel cru da screenshot. No desktop, pixel físico do mss vira coordenada lógica do SO.
Navegador
from selenium import webdriver
from selenium.webdriver.common.by import By
from vizion import Vizion, VizionConfig
pagina = Vizion.web(
webdriver.Chrome(),
config=VizionConfig(default_timeout=15, show_overlay=True),
)
pagina.get("https://intranet")
pagina.find_and_click(by=By.ID, value="user", template="user.png", text="Usuário")
pagina.wait_url("/home")
find_and_click aceita seletor, recorte e texto ao mesmo tempo: se o DOM falhar, a visão e o OCR entram.
Área de trabalho
from vizion import Vizion, VizionConfig
tela = Vizion.desktop(config=VizionConfig(use_virtual_mouse=True))
tela.register_image("ok", "ok.png")
tela.click_image("ok")
tela.click_text("Confirmar")
tela.keyboard("Ctrl+S")
use_virtual_mouse=True (Windows) clica sem deixar o cursor no alvo.
Do desktop dá para abrir o Chrome e continuar no mesmo catálogo de imagens:
tela = Vizion.desktop()
pagina = tela.open_browser("https://intranet")
pagina.find_and_click(by="id", value="user")
tela.click_image("ok.png")
Vários alvos iguais
Quando o mesmo botão aparece várias vezes, passe uma âncora única e o recorte do botão:
bot.click(anchor="aviso.png", target="ok.png")
# ou
tela.click_relative("aviso.png", "ok.png", max_distance=200)
Lote de passos
bot.run([
{"image": "menu.png", "timeout": 8},
{"anchor": "linha.png", "target": "editar.png"},
{"text": "Salvar", "sendtext": "{enter}"},
{"type": "keyboard", "command": "Ctrl+S"},
])
O motor avançado (Vizion.web / Vizion.desktop) expõe o mesmo lote em execute_tasks.
Ajuste
VizionConfig controla timeout, limiar OpenCV, overlay, idiomas OCR, mouse virtual. print(doctor()) lista o que está instalado.
No IDE, help(VizionDriver.find_and_click) mostra o contrato completo (seletor, recorte, OCR, overlay).
Licença
Software proprietário. Ver LICENSE.
Desenvolvido por Josias Azevedo da Silva.
Metadata
Release files for pyvizion 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyvizion-0.3.0.tar.gz | 55.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyvizion-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 119.5 kB
Release files / pyvizion-0.3.0.tar.gz
| Download URL | pyvizion-0.3.0.tar.gz |
|---|---|
| Size | 55.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
508df580fc823b70c5e87ea8ede95d439b634409f2fc33d6c50c94f6588606c0
|
|
BLAKE2b-256 checksum How to use checksums |
cde7d5385a5ff4c35fcccbdcb320e3e850bba843fb67483953c7dd9cb14f60a2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.0
|
Release files / pyvizion-0.3.0-py3-none-any.whl
| Download URL | pyvizion-0.3.0-py3-none-any.whl |
|---|---|
| Size | 63.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f057cabbe5e593f307f2d6c098f5e4a0a0ea94728d3a53e9fe29a0b984fb1c58
|
|
BLAKE2b-256 checksum How to use checksums |
8db865debf08b2ab963788481e56d03d2b6fedc307cb53b97a7a6eb43a0e3c38
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.0
|