es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Identificador de control faltante – pywinauto

La función printcontrolidentifier() parece no listar todos los controles.

La ventana que intento automatizar se ve así:

Ventana de campo de edición

Estoy intentando acceder al signo de “más” debajo del título “Editar campo”. Puedo obtener el identificador de la barra donde se agregan los 4 controles, pero no sus hijos. La barra en sí es:

| Barra de herramientas – ‘ToolBar’ (L1586, T836, R2254, B875)
| [‘ToolBar’, ‘ToolBarToolbar’, ‘Toolbar2’]
| child_window(title=”ToolBar”, class_name=”TToolBar”)

ACTUALIZACIÓN: uso del modo “Automatización de la IU”

Con Inspeccionar puedo obtener los siguientes detalles de la barra de herramientas y del signo de “más”.

Barra de herramientas con Inspeccionar
Barra de herramientas

Botón con Inspeccionar
Botón

¿Hay alguna forma de acceder al control por ChildId como se ve en los detalles dados por Inspeccionar? ¿O alguna otra forma?

El backend es el predeterminado “win32”. Cambiarlo a “uia” no reveló más información.

Actualización 2021-12-01

Lo siguiente da como resultado AttributeError:

buttons = app.EditField.child_window(title=”ToolBar”, class_name=”TToolBar”).buttons()

AttributeError: Ni el elemento GUI (envoltura) ni el método de envoltura ‘buttons’ fueron encontrados (¿hay algún error tipográfico?)

Actualización 2021-12-02

El objeto en sí no devuelve nada, pero el print devuelve lo siguiente:

print(app.EditField.child_window(title=”ToolBar”, class_name=”TToolBar”).wrapper_object())

common_controls.ToolbarWrapper – ‘ToolBar’, Toolbar

Y lo siguiente devuelve:

print([w.window_text() for w in app.windows()])

[”, ‘Editar campo’, ‘S100 – S10B9011DA’, ‘Progreso’, ‘Introducir numérico’, ”, ‘XXXX XXXX. scp – SICK CDS S100’, ‘CDS S100’, ”, …. ”, ‘Ventana del servidor DDE’, ”, ‘M’, ‘IME predeterminado’]

La ventana principal es “XXXX XXXX.scp – SICK CDS S100”. Desde allí se abre la ventana “S100 – S10B9011DA”, y desde allí se accede a “Editar campo”.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que la función print_control_identifier() no enumera todos los controles en la ventana. El usuario está intentando acceder al signo “más” debajo del título “Campo de edición”, pero no puede obtener el identificador del control. Puede obtener el identificador de la barra donde se agregan los 4 controles, pero no los identificadores secundarios de ésta. El usuario intentó cambiar la opción de respaldo a “uia”, pero no encontró más información. También intentó acceder al control por ChildId según lo visto en los detalles dados por Inspect, pero no tuvo éxito. El objeto en sí no devolvió nada, pero la instrucción de impresión devolvió algunos nombres de ventana. Parece que la ventana principal es ‘XXXX XXXX.scp – SICK CDS S100’, y desde allí se abre la ventana ‘S100 – S10B9011DA’, y desde allí el usuario obtiene acceso a ‘Campo de edición’.

Comments are closed.