14_automate/test_login.py

import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import WebDriverException
from selenium.webdriver.support.ui import WebDriverWait


LOCAL_URL = "http://localhost:5000/"


@pytest.fixture
def driver():
    browser = webdriver.Firefox()
    yield browser
    browser.close()


def click_and_wait(driver, button, timeout=5):
    source = driver.page_source
    button.click()
    def compare_source(driver):
        try:
            return source != driver.page_source
        except WebDriverException:
            pass
    WebDriverWait(driver, timeout).until(compare_source)


def test_login_with_correct_credentials(driver):
    driver.get(LOCAL_URL)

    username = driver.find_element(By.ID, "username")
    password = driver.find_element(By.ID, "password")
    button = driver.find_element(By.ID, "login_submit")

    username.send_keys("maria.k")
    password.send_keys("0227")
    button.click()

    WebDriverWait(driver, 1).until(lambda d: d.execute_script("return document.readyState") == "complete")
    assert driver.get_cookie("webonomicon") is not None


def test_login_with_correct_credentials_another_way(driver):
    driver.get(LOCAL_URL)

    username = driver.find_element(By.ID, "username")
    password = driver.find_element(By.ID, "password")
    button = driver.find_element(By.ID, "login_submit")

    username.send_keys("maria.k")
    password.send_keys("0227")
    click_and_wait(driver, button)
    assert driver.get_cookie("webonomicon") is not None