Author SHA1 Message Date
TheRaiwy 872acb8449 Dismiss modal dialogs before interacting with login form
tests / test (push) Successful in 6s
tests / release (push) Successful in 5s
2026-07-10 19:55:10 +03:00
TheRaiwy f161dbbbd5 Auto-retry on verification timeout / iframe not found
tests / test (push) Successful in 5s
tests / release (push) Successful in 6s
2026-07-10 19:43:51 +03:00
+15 -4
View File
@@ -346,6 +346,17 @@ def process_account(driver, acc: dict, donor_video: Path | None,
except Exception: except Exception:
pass pass
# close any modal dialogs blocking the login form
for _ in range(10):
try:
modal = driver.find_element(By.XPATH, "//h4[@class='modal-title']/ancestor::div[contains(@class, 'modal')]")
close_btn = modal.find_element(By.XPATH, ".//button[contains(@class, 'close')]")
close_btn.click()
log.info("Dismissed login modal")
time.sleep(1)
except Exception:
break
username_input = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "login-username"))) username_input = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "login-username")))
ActionChains(driver).move_to_element(username_input).pause(0.3).perform() ActionChains(driver).move_to_element(username_input).pause(0.3).perform()
time.sleep(0.1); username_input.click(); time.sleep(0.1); username_input.clear() time.sleep(0.1); username_input.click(); time.sleep(0.1); username_input.clear()
@@ -432,8 +443,8 @@ def process_account(driver, acc: dict, donor_video: Path | None,
) )
log.info("Persona iframe found") log.info("Persona iframe found")
except Exception: except Exception:
log.warning("Persona widget iframe not found") log.warning("Persona widget iframe not found, will retry")
return False return True
if frames_b64 is None and donor_video: if frames_b64 is None and donor_video:
w, h = _get_video_size(donor_video) w, h = _get_video_size(donor_video)
@@ -677,9 +688,9 @@ def process_account(driver, acc: dict, donor_video: Path | None,
except Exception: except Exception:
pass pass
log.info("No decline message — pending (wait for days)") log.info("Verification timed out — restarting")
save_result(acc, "pending", "no result in 120s loop") save_result(acc, "pending", "no result in 120s loop")
return False return True
def ensure_files() -> None: def ensure_files() -> None: