- Initializing the Selenium WebDriver
from selenium import webdriver
# Initialize the WebDriver for Chrome
driver = webdriver.Chrome(executable_path='path/to/chromedriver.exe')
# Initialize the WebDriver for Firefox
driver = webdriver.Firefox(executable_path='path/to/geckodriver.exe')
- Creating a Page Object
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
class LoginPage:
def __init__(self, driver):
self.driver = driver
self.username_field = (By.ID, 'username')
self.password_field = (By.ID, 'password')
self.login_button = (By.ID, 'login-button')
def enter_username(self, username):
self.driver.find_element(*self.username_field).send_keys(username)
def enter_password(self, password):
self.driver.find_element(*self.password_field).send_keys(password)
def click_login_button(self):
self.driver.find_element(*self.login_button).click()
def wait_for_login_page(self):
WebDriverWait(self.driver, 10).until(EC.visibility_of_element_located(self.login_button))
3. Writing a Test Case using pytest
import pytest
@pytest.mark.smoke
def test_successful_login(driver):
login_page = LoginPage(driver)
login_page.enter_username('testuser')
login_page.enter_password('password')
login_page.click_login_button()
# Add assertions to verify successful login
- Setting up Fixtures in pytest
from selenium import webdriver
@pytest.fixture(scope='session')
def driver():
# Initialize the WebDriver
driver = webdriver.Chrome(executable_path='path/to/chromedriver.exe')
# Alternatively, use Firefox driver: webdriver.Firefox(executable_path='path/to/geckodriver.exe')
# Set up any additional configurations or capabilities
driver.maximize_window()
# Yield the driver instance to the test
yield driver
# Teardown - quit the driver after all tests have finished
driver.quit()
- Capturing Screenshots
import datetime
def capture_screenshot(driver, screenshot_dir):
timestamp = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
screenshot_name = f'screenshot_{timestamp}.png'
screenshot_path = os.path.join(screenshot_dir, screenshot_name)
driver.save_screenshot(screenshot_path)