setup_open.py 1018 B

12345678910111213141516171819202122232425262728293031323334
  1. #!/usr/bin/env python3
  2. """Click Open valve and wait for the dashboard to show the valve open."""
  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: bool(d.find_element(By.TAG_NAME, "body").get_attribute("loaded-dashboard"))
  9. )
  10. def wait_for_state(driver, state, timeout=30):
  11. def ready(d):
  12. try:
  13. return f"State: {state}" in d.find_element(By.TAG_NAME, "main").text
  14. except Exception:
  15. return False
  16. WebDriverWait(driver, timeout).until(ready)
  17. def run(driver):
  18. wait_for_dashboard(driver)
  19. wait_for_state(driver, "closed")
  20. driver.find_element(By.CSS_SELECTOR, 'button[title="Open valve"]').click()
  21. wait_for_state(driver, "open")
  22. WebDriverWait(driver, 10).until(
  23. lambda d: d.find_element(By.CSS_SELECTOR, 'button[title="Close valve"]').is_enabled()
  24. )
  25. time.sleep(0.5)