Page Object
Canonical Name: testbase.browser.PageObject
A PageObject
represents a single page within a web site. It's purpose is to abstract the structure of the page and
provide methods to query and interact with the page as it is loaded in the browser. Tests should almost never interact
with selenium directly. Instead, create methods on a page object to handle those interactions.
Create page object by deriving from the base PageObject and providing some information about your page:
class GreatPage(PageObject):
_urlPattern = 'some_named_url_pattern'
_pageName = 'Page Name'
The page object makes use of two class-level attributes: _urlPattern
and _pageName
. The URL pattern specifies a
named pattern from the site's URL config. The page name is a human readable description of the page. The page name is
optional but recommended as it is used in messages and error descriptions.
The simplest way to create a new instance of a page object is to browse to the page using the
BrowserTestCase.browseToPage
method. A page object can also be instantiated directly by passing the
selenium webdriver instance and any URL fields necessary for the URL pattern. For example:
def test_somethingGreat(self):
# this will browse to the page then create a new GreatPage object
page = self.browseToPage(GreatPage, urlArgument=value)
# this creates an instance of GreatPage without affecting the browser
page = GreatPage(self.browser, urlArgument=value)
In either case, when a new PageObject is instantiated it immediately verifies that the browser's location matches the URL that the object expects. If there is a mismatch of any kind then an error is raised.
Properties
browser
The selenium webdriver object for this page. Use this to query and interact with the page.