Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions main.py
Original file line number Diff line number Diff line change
Expand Up @@ -520,11 +520,17 @@ def run_speed_test_task(driver: WebDriver, access_code: str) -> Optional[SpeedRe
# Wait directly for the results table to appear
# instead of relying on the run button's state
print("Waiting for gateway results table...")
table_selector = (By.CSS_SELECTOR, "table.grid.table100")
table = WebDriverWait(driver, 90).until(EC.visibility_of_element_located(table_selector))
print("Gateway speed test complete. Parsing results...")
# Use the wait only to confirm the table is ready
WebDriverWait(driver, 90).until(
EC.visibility_of_element_located((By.CSS_SELECTOR, "table.grid.table100"))
)

print("Gateway speed test complete. Parsing results...")
results: SpeedResults = {}

# THE FIX: Re-find the table now to get a fresh reference
table = driver.find_element(By.CSS_SELECTOR, "table.grid.table100")

rows = table.find_elements(By.TAG_NAME, "tr")
for row in rows:
cols = row.find_elements(By.TAG_NAME, "td")
Expand Down
5 changes: 3 additions & 2 deletions tests/test_selenium_tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,12 +115,13 @@ def test_speed_test_task_success(mock_wait, mock_sleep, mock_driver):
mock_table = MagicMock()
mock_table.find_elements.return_value = [mock_row_down, mock_row_up]

mock_driver.find_element.return_value = MagicMock() # for run button
# This mock will now handle the final table find, after the wait confirms visibility
mock_driver.find_element.return_value = mock_table

mock_wait.return_value.until.side_effect = [
TimeoutException("No password field"), # First wait for password fails
MagicMock(), # Second wait for run button succeeds
mock_table, # Third wait for results table visibility
True, # Third wait for results table visibility (return value is ignored)
]

results = run_speed_test_task(mock_driver, "test_code")
Expand Down