Aplicaciones de Windows¶
Warning
Estos métodos solo son compatibles con el sistema operativo Windows.
Utilizando los métodos a continuación, podrás interactuar con los elementos de una aplicación en ejecución.
Para interactuar con los elementos, puedes utilizar selectores e identificadores específicos. La tabla a continuación define los selectores que se pueden utilizar para conectarse a una aplicación y filtrar un elemento.
Info
Los atributos y propiedades de una aplicación de Windows pueden ser visualizados utilizando herramientas de espionaje.
Usando el plugin de BotCity Studio para Visual Studio Code, tienes acceso al BotCity Windows Inspector, que cuenta con características específicas para inspeccionar aplicaciones de Windows y generar código Python integrado con el marco de desarrollo.
Consulta más detalles sobre automatizaciones de aplicaciones Desktop y el uso del BotCity Windows Inspector en este tutorial.
Selector | Descripción |
---|---|
class_name | Elementos con esta clase de ventana |
class_name_re | Elementos cuya clase coincide con esta expresión regular |
parent | Elementos que son hijos de este elemento |
process | Elementos en ejecución en este proceso |
title | Elementos con este texto |
title_re | Elementos cuyo texto coincide con esta expresión regular |
top_level_only | Solo elementos de nivel superior (valor predeterminado=True) |
visible_only | Solo elementos visibles (valor predeterminado=True) |
enabled_only | Solo elementos habilitados (valor predeterminado=False) |
best_match | Elementos con un título similar a este |
handle | El identificador del elemento a devolver |
ctrl_index | El índice del elemento secundario a devolver |
found_index | El índice del elemento secundario filtrado a devolver |
predicate_func | Un gancho proporcionado por el usuario para una validación personalizada del elemento |
active_only | Solo elementos activos (valor predeterminado=False) |
control_id | Elementos con este ID de control |
control_type | Elementos con este tipo de control (cadena; para elementos de UIAutomation ) |
auto_id | Elementos con este ID de automatización (para elementos de UIAutomation ) |
framework_id | Elementos con este ID de marco (para elementos de UIAutomation ) |
backend | Nombre del backend a utilizar durante la búsqueda (el valor predeterminado None significa el backend activo actual) |
Backend¶
El tipo de backend se refiere a la tecnología de accesibilidad compatible con la aplicación. Puedes elegir entre dos backends disponibles:
- Win32
- UIA
¿Cuándo usar cada uno?¶
El backend Win32 se utiliza de forma predeterminada y a menudo se utiliza para aplicaciones como MFC, VB6, VCL, controles simples de WinForms y la mayoría de las aplicaciones antiguas.
El backend UIA se utiliza a menudo para aplicaciones como WinForms, WPF, aplicaciones de la Tienda, Qt5 y navegadores.
Algunas aplicaciones admiten ambos tipos, pero pueden comportarse de manera diferente al usarlos. Puedes utilizar las herramientas de espionaje como referencia para determinar qué tipo es más adecuado para tu aplicación. Obtén más detalles en este enlace.
Conectar a una aplicación¶
Puedes conectarte a una instancia de una aplicación abierta.
Es posible utilizar una combinación de selectores y también pasar
la tecnología de accesibilidad compatible con la aplicación (Backend
).
Note
Además de los selectores mencionados anteriormente, también puedes utilizar algunos selectores de conexión específicos:
- process: ID de proceso del objetivo
- handle: Identificador de ventana del objetivo
- path: Ruta utilizada para iniciar el objetivo
Conectando a partir de una instancia del pywinauto¶
Si ya utilizas la biblioteca pywinauto
y ya tienes la instancia de una aplicación configurada en tu código, podrás usarla junto con el Framework Desktop de BotCity.
Basta con pasar tu instancia Application
o WindowSpecification
referente a la aplicación a la propiedad app
del bot.
from botcity.core import DesktopBot, Backend
from pywinauto.application import Application
from pywinauto import Desktop
# Creación de instancias de DesktopBot
bot = DesktopBot()
# Iniciando el navegador a través de la clase 'Application' del pywinauto
chrome_path = 'C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe'
chrome_app = Application(backend='uia').start(
chrome_path + ' --force-renderer-accessibility ''https://<URL>'
)
# Configurando la propiedad `app` del DesktopBot utilizando esta instancia creada con el pywinauto
bot.app = chrome_app
...
# Obteniendo la referencia de la ventana principal de la calculadora
calc_app = Desktop(backend="uia").Calculator
# Configurando la propiedad `app` del DesktopBot utilizando esta instancia creada con el pywinauto
bot.app = calc_app
Tip
Si utilizas esta estrategia, no será necesario utilizar el método connect_to_app
.
Buscar contextos¶
Puedes buscar ventanas y contextos de la aplicación, como una ventana principal o una más específica.
Buscar elementos¶
Puedes buscar elementos de la aplicación utilizando el contexto general o un contexto principal encontrado previamente.
# Searching for some specific window.
popup_window = bot.find_app_window(title="Confirmation Window", class_name="ThunderRT6MDIForm")
# Searching for the element that is in the context of the found window.
btn_continue = bot.find_app_element(from_parent_window=popup_window, title="Continue", class_name="ThunderRT6CommandButton")
# Performing some operations with the found element.
btn_continue.click()
Tip
La facilidad de inspeccionar y localizar las propiedades del elemento depende directamente de la estructura de la aplicación.
En algunos casos, para mantener el control de la ventana principal después de una acción en una ventana secundaria, será necesario buscar nuevamente la referencia de la ventana principal para recuperar el control sobre ella.
Info
El módulo Windows Applications
se basa en las funcionalidades de la biblioteca pywinauto
.
Consulta más detalles sobre los métodos disponibles para cada tipo de elemento en este enlace.