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 TestLoginForm(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.get('https://example.com/login')
def test_invalid_login_shows_error(self):
driver = self.driver
# Wait for username field
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'username')))
username_input = driver.find_element(By.ID, 'username')
password_input = driver.find_element(By.ID, 'password')
login_button = driver.find_element(By.ID, 'login-btn')
username_input.send_keys('wronguser')
password_input.send_keys('wrongpass')
login_button.click()
# Wait for error message
error = WebDriverWait(driver, 10).until(
EC.visibility_of_element_located((By.ID, 'error-msg'))
)
self.assertTrue(error.is_displayed())
self.assertEqual(error.text, 'Invalid username or password.')
def tearDown(self):
self.driver.quit()
if __name__ == '__main__':
unittest.main()