From 0eba35bf3195120f4a028fd8b0894096663c0744 Mon Sep 17 00:00:00 2001 From: Si0uL <26586210+Si0uL@users.noreply.github.com> Date: Mon, 15 Jun 2026 11:52:12 +0200 Subject: [PATCH 1/2] Fix headless interactive auth being stuck #154 --- roadtx/roadtools/roadtx/selenium.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/roadtx/roadtools/roadtx/selenium.py b/roadtx/roadtools/roadtx/selenium.py index ed89e49..cff314c 100644 --- a/roadtx/roadtools/roadtx/selenium.py +++ b/roadtx/roadtools/roadtx/selenium.py @@ -295,6 +295,13 @@ def selenium_login(self, url, identity=None, password=None, otpseed=None, keep=F els = WebDriverWait(driver, 6000).until(lambda d: d.find_element(By.ID, "i0118")) els.send_keys(Keys.ENTER) + # In case "Are you trying to sign in to MS authentication broker" page is shown immediately, click continue + try: + els = WebDriverWait(driver, 1).until(lambda d: d.find_element(By.ID, "idSIButton9")) + els.send_keys(Keys.ENTER) + except TimeoutException: + pass + # Quick check of mfa not needed try: try: From 51e350180f05b70531029ac576d92ee3d6023946 Mon Sep 17 00:00:00 2001 From: Si0uL <26586210+Si0uL@users.noreply.github.com> Date: Mon, 15 Jun 2026 12:14:39 +0200 Subject: [PATCH 2/2] Improve robustness to avoid clicking a disabled button --- roadtx/roadtools/roadtx/selenium.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/roadtx/roadtools/roadtx/selenium.py b/roadtx/roadtools/roadtx/selenium.py index cff314c..876d8b8 100644 --- a/roadtx/roadtools/roadtx/selenium.py +++ b/roadtx/roadtools/roadtx/selenium.py @@ -298,7 +298,9 @@ def selenium_login(self, url, identity=None, password=None, otpseed=None, keep=F # In case "Are you trying to sign in to MS authentication broker" page is shown immediately, click continue try: els = WebDriverWait(driver, 1).until(lambda d: d.find_element(By.ID, "idSIButton9")) - els.send_keys(Keys.ENTER) + # Prevents attempting to click on disabled button, e.g. if account selection page is shown + if els.get_attribute("style") != "display: none;": + els.click() except TimeoutException: pass