setup_preview.py 1013 B

12345678910111213141516171819202122232425262728293031323334
  1. #!/usr/bin/env python3
  2. """Open the Human in the Control Loop dashboard with water level output."""
  3. import time
  4. from selenium.webdriver.common.by import By
  5. from selenium.webdriver.support.ui import WebDriverWait
  6. def _wait_for_dashboard(driver, timeout=30):
  7. WebDriverWait(driver, timeout).until(
  8. lambda d: d.execute_script("return !!window.client")
  9. )
  10. WebDriverWait(driver, timeout).until(
  11. lambda d: bool(d.find_element(By.TAG_NAME, "body").get_attribute("loaded-dashboard"))
  12. )
  13. def _wait_for_water_level(driver, timeout=30):
  14. def ready(d):
  15. try:
  16. output = d.find_element(By.CSS_SELECTOR, ".mre-output").text
  17. pump = d.find_element(By.CSS_SELECTOR, '[title="Pump ON - 5m"]')
  18. except Exception:
  19. return False
  20. return "Water level 47%" in output and pump.is_displayed()
  21. WebDriverWait(driver, timeout).until(ready)
  22. def run(driver):
  23. _wait_for_dashboard(driver)
  24. _wait_for_water_level(driver)
  25. time.sleep(0.2)