64 lines
2.0 KiB
Python
64 lines
2.0 KiB
Python
"""
|
|
Collection of waiting statements.
|
|
"""
|
|
|
|
from selenium.webdriver.remote.webdriver import WebDriver
|
|
from selenium.webdriver.support.ui import WebDriverWait
|
|
from selenium.webdriver.support import expected_conditions as EC
|
|
from selenium.webdriver.common.by import By
|
|
|
|
|
|
def wait_for_url_change(driver: WebDriver, old_url: str, timeout: int = 10) -> None:
|
|
WebDriverWait(driver, timeout).until(lambda d: d.current_url != old_url)
|
|
|
|
|
|
def wait_until_url_contains(driver: WebDriver, text: str, timeout: int = 10) -> None:
|
|
WebDriverWait(driver, timeout).until(lambda d: text in d.current_url)
|
|
|
|
|
|
def wait_for_element(driver: WebDriver, by: str, value: str, timeout: int = 10):
|
|
return WebDriverWait(driver, timeout).until(
|
|
EC.presence_of_element_located((by, value))
|
|
)
|
|
|
|
|
|
def wait_for_element_with_text(
|
|
driver: WebDriver, tag: str, text: str, timeout: int = 10
|
|
):
|
|
return WebDriverWait(driver, timeout).until(
|
|
EC.text_to_be_present_in_element((By.TAG_NAME, tag), text)
|
|
)
|
|
|
|
|
|
def wait_for_clickable(driver: WebDriver, by: str, value: str, timeout: int = 10):
|
|
return WebDriverWait(driver, timeout).until(EC.element_to_be_clickable((by, value)))
|
|
|
|
|
|
def wait_for_element_to_be_visisble(driver: WebDriver, id: str, timeout: int = 10):
|
|
return WebDriverWait(driver, timeout).until(
|
|
EC.visibility_of_element_located((By.ID, id))
|
|
)
|
|
|
|
|
|
def wait_for_element_to_be_disabled(
|
|
driver: WebDriver, by: str, value: str, timeout: int = 10
|
|
):
|
|
"""Wait for an element to be disabled."""
|
|
return WebDriverWait(driver, timeout).until(
|
|
EC.none_of(EC.element_to_be_clickable((by, value)))
|
|
)
|
|
|
|
|
|
def wait_for_alert(driver: WebDriver, timeout: int = 10):
|
|
"""Wait for an alert."""
|
|
return WebDriverWait(driver, timeout).until(lambda d: d.switch_to.alert)
|
|
|
|
|
|
def wait_for_element_to_disappear(
|
|
driver: WebDriver, by: str, value: str, timeout: int = 10
|
|
):
|
|
"""Wait for an element to disappear."""
|
|
return WebDriverWait(driver, timeout).until(
|
|
EC.none_of(EC.presence_of_element_located((by, value)))
|
|
)
|