Python library provides page factory approach to implement page object model in selenium
Project description
Project Page
https://github.com/NayakwadiS/selenium-page-factory
selenium-page-factory
Python library provides page factory approach to implement page object model in selenium
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.
- Cent percent unittest coverage.
Installation
pip install:
> pip install selenium-page-factory
Examples
- Python - Unittest
from seleniumpagefactory.Pagefactory import PageFactory import unittest from selenium import webdriver class LoginPage(PageFactory): def __init__(self,driver): # It is necessary to to initialise driver as page class member to implement Page Factory self.driver = driver # define locators dictionary where key name will became WebElement using PageFactory locators = { "edtUserName": ('ID', 'user_login'), "edtPassword": ('NAME', 'pwd'), "btnSignIn": ('XPATH', '//input[@value="Log In"]') } def login(self): # set_text(), click_button() methods are extended methods in PageFactory self.edtUserName.set_text("opensourcecms") # edtUserName become class variable using PageFactory self.edtPassword.set_text("opensourcecms") self.btnSignIn.click_button() class LoginTest(unittest.TestCase): def test_Login(self): driver = webdriver.Chrome() driver.get("https://s1.demo.opensourcecms.com/wordpress/wp-login.php") pglogin = LoginPage(driver) pglogin.login() if __name__ == "__main__": unittest.main()
- Python - Pytest
Inside test_Login.py
import pytest from selenium import webdriver from seleniumpagefactory.Pagefactory import PageFactory def test_Login(): driver = webdriver.Chrome("") driver.get("https://s1.demo.opensourcecms.com/wordpress/wp-login.php") pglogin = LoginPage(driver) pglogin.login() class LoginPage(PageFactory): def __init__(self,driver): # It is necessary to to initialise driver as page class member to implement Page Factory self.driver = driver # define locators dictionary where key name will became WebElement using PageFactory locators = { "edtUserName": ('ID', 'user_login'), "edtPassword": ('NAME', 'pwd'), "btnSignIn": ('XPATH', '//input[@value="Log In"]') } def login(self): # set_text(), click_button() methods are extended methods in PageFactory self.edtUserName.set_text("opensourcecms") # edtUserName become class variable using PageFactory self.edtPassword.set_text("opensourcecms") self.btnSignIn.click_button()
Pre-Requisite
Every Page in Page Object Model should have WebDriver object as class member same as above example.
Or
class PageClass(PageFactory): def __init__(self,driver): self.driver = driver
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Close
Hashes for selenium-page-factory-1.1.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 838d8044ccb314239467542351905215c23b318ca9232be501b6d3b93959862a |
|
MD5 | 62b58ea0ff83bd9c2d442989f18af86c |
|
BLAKE2-256 | 5791c7849b4c56993e20fe522e166e31b2d31eaf090466704e6502d7ce03fc7b |