Skip to content

Latest commit

 

History

History
48 lines (37 loc) · 1.3 KB

pages.md

File metadata and controls

48 lines (37 loc) · 1.3 KB

Page Objects

Page objects are adapters for Websites, that provide methods and actions for their features.

For example: Create a page object, that represents the start page of a website.

from paf.page import Page
from paf.locator import By
from pages import UserPage

class StartPage(Page):
    def login(self, username: str, password: str):
        self._find("#username").type(username)
        self._find("#password").type(password)
        self._find("#login").click()
        return self._create_page(UserPage)

This page provides the method login which leads to the UserPage.

from paf.page import Page
from paf.locator import By
from paf.uielement import TestableUiElement

class UserPage(Page):
    @property
    def greeter(self) -> TestableUiElement:
        return self._find("#greeter")

The UserPage provides a property named greeter, which may be a container for login messages.

You can combine these pages now the following way.

import inject
import paf.config
from paf.page import PageFactory
from pages import StartPage

inject.configure(paf.config.inject)
page_factory = inject.instance(PageFactory)

start_page = page_factory.create_page(StartPage)
user_page = start_page.login("user", "secret")
user_page.greeter.expect.text.contains("Welcome").be(True)