El elemento está ahí, y el clic no hace nada
La captura muestra el botón. Set-of-Mark lo numera. El clic informa de éxito, y nada se mueve. Tres niveles de recurso, en el orden en que probarlos.
El síntoma. El elemento se ve en la captura. Set-of-Mark le dio un número.
Hace clic, obtiene succes: true — y la página no se mueve.
O bien obtiene un tiempo agotado sobre un elemento que ve perfectamente en la captura.
Por qué un elemento visible puede no dejarse pulsar
Playwright se niega a pulsar lo que una persona no podría pulsar. Antes de actuar comprueba que el elemento es visible, estable y que nada lo tapa. Esa comprobación es una virtud: le impide pulsar la capa de un indicador de carga creyendo que acierta en el botón de detrás.
También salta con cosas que una persona sí puede pulsar. Un interruptor con un
estilo CSS propio, un botón dentro de un <dialog> abierto con showModal(),
un elemento bajo una capa decorativa sin eventos de puntero — todos reales,
todos interactivos, todos rechazados.
Tres niveles, en este orden
1 — Clic simple. Empiece siempre aquí. Si funciona, lo demás no importa.
{"type": "cliquer", "selecteur": "#confirm"}
2 — force: true. Se salta la comprobación de interactividad de Playwright
y pulsa de todos modos. Es la respuesta correcta para un elemento que está de
verdad pero no supera la comprobación.
{"type": "cliquer", "selecteur": "#confirm", "force": true}
3 — repli_js: true. Un segundo nivel, no un sustituto del primero. Diwall
lo reintenta con un clic JavaScript sobre el propio elemento — el mismo
el.click() que si no escribiría a mano en una acción evaluer, integrado en
cliquer.
{"type": "cliquer", "selecteur": "#dialog-confirm button[type=submit]",
"force": true, "repli_js": true}
Solo se ejecuta después de que un clic nativo haya fallado realmente. Poner la opción no fuerza JavaScript en cada clic.
Cómo saber qué nivel hizo el trabajo
La brújula se lo dice, y solo cuando el recurso ocurrió de verdad:
"boussole": {"repli_js_utilise": true}
El campo aparece cuando se ejecutó el recurso alternativo, nunca solo porque la opción estuviera puesta. Así sabe si su destino necesita realmente el nivel 3 — conviene saberlo antes de copiar esa opción en cada acción del escenario.
Una incompatibilidad, y falla de forma visible
repli_js ejecuta JavaScript, que –no-evaluer
prohíbe durante toda la ejecución. Un escenario que combine ambos se rechaza
en la validación (arguments_incompatibles, código 2) antes de que
arranque ningún navegador — nunca se ignora en silencio.
El caso que parece el mismo y no lo es
Si el clic falla sobre un elemento dentro de un diálogo que abrió en una
llamada anterior, ningún nivel le salvará. El diálogo ya no existe: reanudar
una sesión recarga la página, y un diálogo showModal() no sobrevive a una
recarga.
Es otro problema, con otra solución. La sesión no se mantiene entre dos llamadas →
En resumen
- Pruebe el clic simple, luego
force: true, luegorepli_js: true. En ese orden. repli_jsnecesita un fallo real para activarse — no es un clic JavaScript a demanda.- Mire
repli_js_utilisepara saber lo que su destino exige realmente. - Un clic que falla sobre un elemento de una llamada anterior es un problema de sesión, no de clic.