selenium-page-factory

Python library provides page factory approach to implement page object model in selenium


Keywords
selenium, page, object, model, pom, pages, factory, page-factory, pageobjectmodel, python, selenium-webdriver, webelement, webelements-methods
License
MIT
Install
pip install selenium-page-factory==2.5

Documentation

selenium-page-factory

Python library provides page factory approach to implement page object model in selenium

Python Pypi Dependencies License Documentation Downloads

Introduction

  • A Page Factory is one way of implementing a Page Object Model. In order to support the Page Object pattern.
  • As in Java we are using @findBy, here we are declaring all web element in dictionary. Dictionary keys become WebElement / class member variable with having all extended WebElement methods.

Main Features

  • Initialise all the webElements declared in Point at a time.
  • All WebElements methods are re-define to add extra features eg- click method extended to have explicit wait for element to be clickable.
  • Cent percent unittest coverage.
  • Supports Selenium 4 ActionChains methods
  • Now Support Appium for mobile testing
  • Raised custom Page factory exceptions

Installation

  pip install selenium-page-factory

Pre-Requisite

Every Page in Page Object Model should have WebDriver object as class member as shown below

class PageClass(PageFactory):

    def __init__(self,driver):
        self.driver = driver        # Required
        self.timeout = 15      	    #(Optional - Customise your explicit wait for every webElement)
        self.highlight = True 	    #(Optional - To highlight every webElement in PageClass)
	self.mobile_test = False    #(Optional - Added for Appium support)

Extended WebElements Methods

set_text get_text
clear_text click_button
double_click get_list_item_count
select_element_by_text select_element_by_index
select_element_by_value get_all_list_item
get_list_selected_item highlight
is_Enabled is_Checked
getAttribute hover
visibility_of_element_located invisibility_of_element_located
element_to_be_clickable text_to_be_present_in_element
context_click execute_script
click_and_hold release

Note: Every WebElement will be created after verifying it's Presence and visibility on Page at Run-Time.

selenium-page-factory Documentation

Selenium Python Framework Example here