from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import unittest
class LoginPage:
def __init__(self, driver):
self.driver = driver
self.username_input = (By.ID, "username")
self.password_input = (By.ID, "password")
self.login_button = (By.ID, "loginBtn")
def enter_username(self, username):
WebDriverWait(self.driver, 10).until(EC.presence_of_element_located(self.username_input)).send_keys(username)
def enter_password(self, password):
WebDriverWait(self.driver, 10).until(EC.presence_of_element_located(self.password_input)).send_keys(password)
def click_login(self):
WebDriverWait(self.driver, 10).until(EC.element_to_be_clickable(self.login_button)).click()
class TestLogin(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.get("https://example.com/login")
self.login_page = LoginPage(self.driver)
def test_valid_login(self):
self.login_page.enter_username("user1")
self.login_page.enter_password("pass123")
self.login_page.click_login()
welcome_message = WebDriverWait(self.driver, 10).until(
EC.presence_of_element_located((By.ID, "welcomeMsg"))
).text
self.assertEqual(welcome_message, "Welcome user1!")
def tearDown(self):
self.driver.quit()
if __name__ == "__main__":
unittest.main()