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 as shown below
class PageClass(PageFactory):
def __init__(self,driver):
self.driver = driver
Release files for selenium-page-factory 1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| selenium-page-factory-1.3.tar.gz | 4.5 kB | Details |
Release files / selenium-page-factory-1.3.tar.gz
| Download URL | selenium-page-factory-1.3.tar.gz |
|---|---|
| Size | 4.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2d934fefc68b27783af4db77bce1e4aff6eff260dacf5d02f611d836f614a57e
|
|
BLAKE2b-256 checksum How to use checksums |
5702c0ddc31c8fa71458675aea265bc53edcda7cf4a742ec87dc6d9e5d34a3dc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.35.0 CPython/3.7.2
|