Ver el botón en una captura no garantiza que pueda pulsarse. El navegador necesita un objetivo correcto, estable, habilitado y accesible al puntero. Si falla, lee el primer error útil y comprueba qué debía cambiar en la página.
Comprueba visibilidad, estado y destino del puntero
Verifica que el localizador encuentra un solo control en la sección. Un botón visible puede estar deshabilitado. Un cuadro, un indicador de carga o un aviso pueden tapar uno habilitado. Si hay intercepción, inspecciona el elemento que recibe el puntero y resuelve el bloqueo por el flujo permitido. Deja permisos o desafíos obligatorios al operador.
Reproduce los tres casos en una página
La práctica incluye un botón tapado, uno deshabilitado y otro fuera de pantalla. Tabbit CLI usó localizadores de rol compatibles con Playwright en 1000 × 580. El primer botón estaba habilitado y visible, pero el puntero llegaba a la capa. Hubo timeout con intercepts pointer events y el estado quedó en waiting. Tras Dismiss overlay, otro clic confirmó el estado.

Cumple la condición del botón deshabilitado
El segundo botón se veía y estaba bajo el puntero, pero enabled era falso. El clic expiró con element is not enabled y quedó waiting. Enable action lo habilitó y el clic siguiente confirmó. En un sitio real, cumple la condición prevista o detente. Cambiar la propiedad puede saltarse el flujo que debes probar.
Distingue fuera de pantalla de oculto
El tercer botón estaba habilitado, a 1.340 píxeles CSS de arriba, fuera de los 580 visibles. El localizador desplazó la página y confirmó Offscreen action: confirmed. Una coordenada de captura no alcanza un control que aún no está en pantalla. Para uno oculto, quizá debas abrir antes un menú o panel.
| Paso | Resultado esperado |
|---|---|
| Covered | intercepts pointer events → waiting → confirmed |
| Disabled | element is not enabled → waiting → confirmed |
| Offscreen | scroll → confirmed |

Actualiza la observación y vuelve a localizar
Tras renderizar, navegar, cambiar el diálogo o desplazar, renueva la captura o el árbol. Limita botones iguales a una sección o fila. Confirma estado y acción. Verifica el mensaje único, URL o registro guardado. Si el estado no está claro, lee antes de repetir, especialmente si hay escrituras.
| Paso | Resultado esperado |
|---|---|
| 1 | role + accessible name |
| 2 | click + state |
| 3 | confirmed marker |
Qué reportan los usuarios
En r/QualityAssurance alguien encontró un objetivo único bajo el puntero, pero clic y lectura de atributo expiraron. Conviene revisar sesión y tiempo antes de culpar a una capa. En r/selenium, otro usuario de Playwright no sabía si su control estaba oculto o fuera de pantalla. Son causas distintas que la práctica ayuda a separar.
¿Debo forzar el clic?
Primero identifica por qué falla el clic normal. Forzarlo omite comprobaciones y puede ocultar un problema real. Verifica el estado esperado después de actuar.
Preguntas frecuentes
¿Debo forzar el clic?
Primero identifica por qué falla el clic normal. Forzarlo omite comprobaciones y puede ocultar un problema real. Verifica el estado esperado después de actuar.
¿Por qué no se puede pulsar un botón visible?
Verifica que el localizador encuentra un solo control en la sección. Un botón visible puede estar deshabilitado. Un cuadro, un indicador de carga o un aviso pueden tapar uno habilitado. Si hay intercepción, inspecciona el elemento que recibe el puntero y resuelve el bloqueo por el flujo permitido. Deja permisos o desafíos obligatorios al operador.
¿Cómo resuelvo una intercepción?
La práctica incluye un botón tapado, uno deshabilitado y otro fuera de pantalla. Tabbit CLI usó localizadores de rol compatibles con Playwright en 1000 × 580. El primer botón estaba habilitado y visible, pero el puntero llegaba a la capa. Hubo timeout con intercepts pointer events y el estado quedó en waiting. Tras Dismiss overlay, otro clic confirmó el estado.
¿Qué reviso en un botón deshabilitado?
El segundo botón se veía y estaba bajo el puntero, pero enabled era falso. El clic expiró con element is not enabled y quedó waiting. Enable action lo habilitó y el clic siguiente confirmó. En un sitio real, cumple la condición prevista o detente. Cambiar la propiedad puede saltarse el flujo que debes probar.
¿Puede un localizador pulsar fuera de pantalla?
El tercer botón estaba habilitado, a 1.340 píxeles CSS de arriba, fuera de los 580 visibles. El localizador desplazó la página y confirmó Offscreen action: confirmed. Una coordenada de captura no alcanza un control que aún no está en pantalla. Para uno oculto, quizá debas abrir antes un menú o panel.