Part Request submitter: retry cold first navigation (avoids transient timeout on first component)
parent
37b5992b0e
commit
1b906dc51a
Binary file not shown.
|
|
@ -122,18 +122,26 @@ def _attach_files(driver, files):
|
||||||
|
|
||||||
|
|
||||||
def submit_request(driver, base, req, no_submit=False):
|
def submit_request(driver, base, req, no_submit=False):
|
||||||
driver.get(f"{base}/partrequestsmanagement/Tasks/Add")
|
url = f"{base}/partrequestsmanagement/Tasks/Add"
|
||||||
try:
|
err = None
|
||||||
_wait(driver, EC.presence_of_element_located((By.ID, "Manufacturer")), t=20)
|
for attempt in range(3): # retry: first nav can be slow/cold
|
||||||
except TimeoutException:
|
driver.get(url)
|
||||||
url = driver.current_url
|
try:
|
||||||
if any(k in url.lower() for k in ("auth.altium.com", "signin", "login", "oauth")):
|
_wait(driver, EC.presence_of_element_located((By.ID, "Manufacturer")), t=20)
|
||||||
|
err = None
|
||||||
|
break
|
||||||
|
except TimeoutException as e:
|
||||||
|
err = e
|
||||||
|
time.sleep(2)
|
||||||
|
if err is not None:
|
||||||
|
cur = driver.current_url
|
||||||
|
if any(k in cur.lower() for k in ("auth.altium.com", "signin", "login", "oauth")):
|
||||||
raise RuntimeError(
|
raise RuntimeError(
|
||||||
"NOT SIGNED IN — this Chrome (the one on the debug port) is on the Altium login "
|
"NOT SIGNED IN — this Chrome (the one on the debug port) is on the Altium login "
|
||||||
"page, so the form never loaded. Open that same Chrome profile, sign into the "
|
"page, so the form never loaded. Open that same Chrome profile, sign into the "
|
||||||
"Workspace (keep me signed in), leave it open, and re-run.")
|
"Workspace (keep me signed in), leave it open, and re-run.")
|
||||||
raise RuntimeError(f"The 'Add new request' form did not load (no #Manufacturer field). "
|
raise RuntimeError(f"The 'Add new request' form did not load (no #Manufacturer field). "
|
||||||
f"Current page URL: {url}")
|
f"Current page URL: {cur}")
|
||||||
_set_text(driver, By.ID, "Manufacturer", req.get("manufacturer", ""))
|
_set_text(driver, By.ID, "Manufacturer", req.get("manufacturer", ""))
|
||||||
_set_text(driver, By.ID, "ManufacturerPartNumbers", req.get("mpn", ""))
|
_set_text(driver, By.ID, "ManufacturerPartNumbers", req.get("mpn", ""))
|
||||||
_set_text(driver, By.ID, "Description", req.get("description", ""))
|
_set_text(driver, By.ID, "Description", req.get("description", ""))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue