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})"
|
||||
)
|
||||
|
||||
# ── 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", "")
|
||||
if expected_after:
|
||||
time.sleep(0.5) # Laisser le temps à la fenêtre de changer
|
||||
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_title = post_info.get("title", "")
|
||||
if expected_after.lower() in post_title.lower() or post_title.lower() in expected_after.lower():
|
||||
print(f" [POST-VÉRIF] OK — '{post_title}'")
|
||||
logger.info(f"POST-VÉRIF OK : '{post_title}'")
|
||||
if (expected_after.lower() in post_title.lower()
|
||||
or post_title.lower() in expected_after.lower()):
|
||||
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:
|
||||
print(f" [POST-VÉRIF] ATTENTION — '{post_title}' ≠ attendu '{expected_after}'")
|
||||
logger.warning(f"POST-VÉRIF : '{post_title}' ≠ attendu '{expected_after}'")
|
||||
result["warning"] = f"post_verif_mismatch:{post_title}"
|
||||
print(f" [POST-VÉRIF] TIMEOUT {max_wait}s — '{post_title}' ≠ '{expected_after}'")
|
||||
logger.warning(f"POST-VÉRIF TIMEOUT : '{post_title}' ≠ '{expected_after}'")
|
||||
result["warning"] = f"post_verif_timeout:{post_title}"
|
||||
else:
|
||||
print(f" [CLICK] Terminé.")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user