feat: polling titre fenêtre au lieu de wait fixe (post-vérification)
Après chaque clic, poll le titre de la fenêtre active toutes les 300ms jusqu'à ce qu'il corresponde au titre attendu (max 10s). 100% visuel — pas de wait arbitraire. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -354,20 +354,32 @@ class ActionExecutorV1:
|
|||||||
f"({real_x}, {real_y}) sur ({width}x{height})"
|
f"({real_x}, {real_y}) sur ({width}x{height})"
|
||||||
)
|
)
|
||||||
|
|
||||||
# ── Post-vérification : titre fenêtre après le clic ──
|
# ── Post-vérification : polling du titre fenêtre ──
|
||||||
|
# On attend que le titre change vers celui attendu (max 10s)
|
||||||
|
# C'est 100% visuel — pas de wait fixe arbitraire
|
||||||
expected_after = action.get("expected_window_title", "")
|
expected_after = action.get("expected_window_title", "")
|
||||||
if expected_after:
|
if expected_after:
|
||||||
time.sleep(0.5) # Laisser le temps à la fenêtre de changer
|
|
||||||
from ..window_info_crossplatform import get_active_window_info
|
from ..window_info_crossplatform import get_active_window_info
|
||||||
|
max_wait = 10.0
|
||||||
|
poll_interval = 0.3
|
||||||
|
elapsed_wait = 0.0
|
||||||
|
matched = False
|
||||||
|
while elapsed_wait < max_wait:
|
||||||
|
time.sleep(poll_interval)
|
||||||
|
elapsed_wait += poll_interval
|
||||||
post_info = get_active_window_info()
|
post_info = get_active_window_info()
|
||||||
post_title = post_info.get("title", "")
|
post_title = post_info.get("title", "")
|
||||||
if expected_after.lower() in post_title.lower() or post_title.lower() in expected_after.lower():
|
if (expected_after.lower() in post_title.lower()
|
||||||
print(f" [POST-VÉRIF] OK — '{post_title}'")
|
or post_title.lower() in expected_after.lower()):
|
||||||
logger.info(f"POST-VÉRIF OK : '{post_title}'")
|
matched = True
|
||||||
|
break
|
||||||
|
if matched:
|
||||||
|
print(f" [POST-VÉRIF] OK en {elapsed_wait:.1f}s — '{post_title}'")
|
||||||
|
logger.info(f"POST-VÉRIF OK en {elapsed_wait:.1f}s : '{post_title}'")
|
||||||
else:
|
else:
|
||||||
print(f" [POST-VÉRIF] ATTENTION — '{post_title}' ≠ attendu '{expected_after}'")
|
print(f" [POST-VÉRIF] TIMEOUT {max_wait}s — '{post_title}' ≠ '{expected_after}'")
|
||||||
logger.warning(f"POST-VÉRIF : '{post_title}' ≠ attendu '{expected_after}'")
|
logger.warning(f"POST-VÉRIF TIMEOUT : '{post_title}' ≠ '{expected_after}'")
|
||||||
result["warning"] = f"post_verif_mismatch:{post_title}"
|
result["warning"] = f"post_verif_timeout:{post_title}"
|
||||||
else:
|
else:
|
||||||
print(f" [CLICK] Terminé.")
|
print(f" [CLICK] Terminé.")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user