Saltar a contenido

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.

Important

Los valores de estos atributos en una aplicación se pueden ver utilizando herramientas de espionaje.

Obtén más detalles sobre cómo inspeccionar aplicaciones utilizando la Herramienta de Accesibilidad Insights para Windows.

Tip

Además de la herramienta mencionada anteriormente para inspeccionar la aplicación, es posible utilizar print_control_identifiers, un método propio de pywinauto que devuelve los identificadores de control de la ventana.

Obtén más detalles en el 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
from botcity.core import Backend

app_path = "<path to the application .exe>"

# Opens the app.
bot.execute(app_path)

# Connecting to the application using the 'path' and 'title' selectors.
bot.connect_to_app(Backend.WIN_32, path=app_path, title="Main Window Title")
// Aún no implementado.

Buscar contextos

Puedes buscar ventanas y contextos de la aplicación, como una ventana principal o una más específica.

# Searching for the main window.
main_window = bot.find_app_window(title_re="Main")

# Searching for some specific window.
popup_window = bot.find_app_window(title="Confirmation Window", class_name="ThunderRT6MDIForm")
// Aún no implementado.

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()
// Aún no implementado.

Tip

La facilidad para inspeccionar y encontrar las propiedades de los elementos 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 volver a declarar la ventana principal para recuperar el control sobre ella.

Info

El módulo de Aplicación se basa en las funcionalidades de la biblioteca pywinauto, obtén más detalles sobre los métodos disponibles para cada tipo de elemento en este enlace.