import unittest
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
class TestLoginDataDriven(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
self.driver.get('https://example.com/login')
def test_login_multiple_users(self):
test_data = [
{'username': 'user1', 'password': 'pass1', 'expected': 'Welcome user1!'},
{'username': 'user2', 'password': 'wrongpass', 'expected': 'Invalid credentials'},
{'username': 'user3', 'password': 'pass3', 'expected': 'Welcome user3!'}
]
for data in test_data:
username_input = WebDriverWait(self.driver, 10).until(
EC.presence_of_element_located((By.ID, 'username'))
)
password_input = self.driver.find_element(By.ID, 'password')
login_button = self.driver.find_element(By.ID, 'login-btn')
username_input.clear()
username_input.send_keys(data['username'])
password_input.clear()
password_input.send_keys(data['password'])
login_button.click()
message = WebDriverWait(self.driver, 10).until(
EC.visibility_of_element_located((By.ID, 'message'))
).text
self.assertEqual(message, data['expected'])
def tearDown(self):
self.driver.quit()
if __name__ == '__main__':
unittest.main()