Hola comunidad Rocketbot,
Estoy automatizando con Rocketbot Studio una aplicación web desarrollada en Angular Material 15+. Al intentar clickear un botón anidado dentro de un <mat-card>, el comando Click Pro de WebPro falla consistentemente con este error:
{‘status’: ‘False’, ‘message’: ‘The item is not available to be clicked’, …}
Investigación realizada
Identifiqué que corresponde al bug oficial documentado de Angular Material (GitHub Issue #2040: “[md-button] will not call click event when nested inside [md-card]”):
- El contenedor
<mat-card>consume el evento click antes de que llegue al botón hijo. - El span
<mat-mdc-button-touch-target>está absolutamente posicionado (área táctil de 48px) e intercepta los clicks. - Los identificadores Angular (
_ngcontent-ng-cXXXXXXXXX) son dinámicos y cambian entre cada build, así que no se puede usar XPath absoluto.
Estructura HTML del botón problemático:
<button class=”mat-mdc-outlined-button mdc-button mat-mdc-button-base”>
<span class=”mat-mdc-button-persistent-ripple mdc-button__ripple”></span>
<mat-icon>file_download</mat-icon>
<span class=”mdc-button__label”>Descargar</span>
<span class=”mat-focus-indicator”></span>
<span class=”mat-mdc-button-touch-target”></span>
<span class=”mat-ripple mat-mdc-button-ripple”></span>
</button>
XPath text-based que utilizo:
//button[contains(bactrim drug class,”mat-mdc-outlined-button”)][.//span[contains(bactrim drug class,”mdc-button__label”)][contains(normalize-space(.),”Descargar”)]]
Estrategias intentadas en Rocketbot
| # | Comando / Estrategia | Resultado |
|---|---|---|
| 1 | webpro/Click Pro | “item not available to be clicked” |
| 2 | select_object + sendkey_web (ENTER) | Funciona ocasionalmente, no consistente |
| 3 | webpro/DoubleClick | No mejora |
| 4 | Click Pro en span hijo mdc-button__label |
El span no dispara el handler del botón padre |
| 5 | Click Pro en span mat-mdc-button-touch-target |
Pendiente probar masivamente |
| 6 | Cascada de 4 intentos con run_onerror=True | Aumenta tasa de éxito pero impredecible |
También usé Desktop Recorder de Rocketbot para grabar el flujo manualmente. Generó los selectores WindowsControl correctamente, pero al re-importar el JSON en Studio los handles dinámicos cambian entre ejecuciones y los clicks fallan.
Preguntas para la comunidad
- ¿Alguien ha enfrentado el bug de Angular Material
<mat-card>consumiendo el click event en Rocketbot? ¿Qué solución estable usaron? - ¿Es la estrategia de
select_object + sendkey_webENTER (eventos teclado) la recomendada por Rocketbot para este tipo de bug? ¿O hay un comando específico que debería usar? - ¿Hay un modo en Desktop Recorder que produzca selectores estables para apps web Angular Material (sin handles dinámicos)?
- ¿Existe algún módulo o approach oficialmente recomendado por Rocketbot específicamente para Angular Material 15+ (que usa las clases
mat-mdc-*)?
Entorno técnico
- Rocketbot Studio: v2026.04.07
- WebPro: v12.13.10
- Chrome: 148.0.7778.218
- Sistema: Windows 11
- Framework: Angular Material 15+
¡Gracias de antemano!