SeleniumLab

Course1 · Selenium automation → Page Object Model

1 · Selenium automation

Intro to Page Objects

14 min · Module 11

Page Object Model (POM) wraps a page’s locators and actions in a class. Tests then read like user stories.

Example / notes

from selenium.webdriver.common.by import By

class LoginPage:
    url = "http://127.0.0.1:8000/lab/login/"

    def __init__(self, driver):
        self.driver = driver

    def open(self):
        self.driver.get(self.url)
        return self

    def login(self, username, password):
        self.driver.find_element(By.ID, "username").send_keys(username)
        self.driver.find_element(By.ID, "password").send_keys(password)
        self.driver.find_element(By.ID, "login-button").click()
        return self

    def success_message(self):
        return self.driver.find_element(By.ID, "flash-success").text

# usage
# page = LoginPage(driver).open().login("demo", "demo1234")
# assert "/lab/welcome/" in driver.current_url
# assert "Welcome" in page.success_message()

Practice in Lab: /lab/login/

Log in to track progress / take quizzes
Modules in this track