From 57c18b404fdca77d1c80cc949d39dbb05f1ee983 Mon Sep 17 00:00:00 2001 From: ff Date: Tue, 2 Jun 2026 23:53:46 -0400 Subject: [PATCH] =?UTF-8?q?fix:=20BCBS=20MA=20=E2=80=94=20wait=20for=20ccP?= =?UTF-8?q?rogressBar=20spinner=20cycle=20before=20clicking=20buttons?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use appear-then-disappear pattern: briefly wait for spinner to show up (so we don't pass through before it starts), then wait for it to clear. Prevents element click interception on Find Provider button in step2. Also restores element_to_be_clickable for New Eligibility Request (step1). Co-Authored-By: Claude Sonnet 4.6 --- ...selenium_BCBS_MA_eligibilityCheckWorker.py | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/apps/SeleniumService/selenium_BCBS_MA_eligibilityCheckWorker.py b/apps/SeleniumService/selenium_BCBS_MA_eligibilityCheckWorker.py index 31039ebf..acdecd19 100644 --- a/apps/SeleniumService/selenium_BCBS_MA_eligibilityCheckWorker.py +++ b/apps/SeleniumService/selenium_BCBS_MA_eligibilityCheckWorker.py @@ -285,7 +285,7 @@ class AutomationBCBSMAEligibilityCheck: ) try: new_elig = self._wait(8).until( - EC.presence_of_element_located((By.XPATH, NEW_ELIG_XPATH)) + EC.element_to_be_clickable((By.XPATH, NEW_ELIG_XPATH)) ) except TimeoutException: # Dropdown may have closed — re-open Verification and try again @@ -293,7 +293,7 @@ class AutomationBCBSMAEligibilityCheck: verification.click() time.sleep(2) new_elig = self._wait(8).until( - EC.presence_of_element_located((By.XPATH, NEW_ELIG_XPATH)) + EC.element_to_be_clickable((By.XPATH, NEW_ELIG_XPATH)) ) try: new_elig.click() @@ -342,13 +342,25 @@ class AutomationBCBSMAEligibilityCheck: provider_id_input.send_keys(self.provider_npi) print(f"[BCBS MA step2] Provider NPI entered: {self.provider_npi}") - # Click Find Provider + # Wait for spinner cycle to complete, then click Find Provider + try: + self._wait(2).until( + EC.visibility_of_element_located((By.CSS_SELECTOR, "div.ccProgressBar")) + ) + except TimeoutException: + pass # spinner never appeared — page loaded instantly + self._wait(10).until( + EC.invisibility_of_element_located((By.CSS_SELECTOR, "div.ccProgressBar")) + ) find_provider = self._wait(10).until( EC.element_to_be_clickable((By.XPATH, "//button[@ng-click='searchProviders()']" )) ) - find_provider.click() + try: + find_provider.click() + except Exception: + self.driver.execute_script("arguments[0].click();", find_provider) print("[BCBS MA step2] Find Provider clicked, waiting...") time.sleep(3)