TabbitBlog

Por qué un agente ve un botón pero no puede pulsarlo

Distingue una superposición, un botón deshabilitado y un objetivo fuera de pantalla. Prueba los tres y verifica el resultado.

En este artículo
  1. Comprueba visibilidad, estado y destino del puntero
  2. Reproduce los tres casos en una página
  3. Cumple la condición del botón deshabilitado
  4. Distingue fuera de pantalla de oculto
  5. Actualiza la observación y vuelve a localizar
  6. Qué reportan los usuarios
  7. ¿Debo forzar el clic?

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.

Playwright · Actionability

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.

Abrir la práctica

Práctica Tabbit con botón tapado y deshabilitado

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.

PasoResultado esperado
Coveredintercepts pointer events → waiting → confirmed
Disabledelement is not enabled → waiting → confirmed
Offscreenscroll → confirmed

Práctica Tabbit tras desplazar y confirmar el botón

Playwright · Actions

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.

PasoResultado esperado
1role + accessible name
2click + state
3confirmed 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.

r/QualityAssurance r/selenium

¿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.

Da el siguiente paso

Deja que Tabbit trabaje junto a ti.

Investiga entre pestañas, automatiza el trabajo repetitivo del navegador y mantén todo el contexto al alcance.