{ "info": { "author": "Sujit Nayakwadi", "author_email": "nayakwadi.sujit@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "Project Page\n=============\nhttps://github.com/NayakwadiS/selenium-page-factory\n\nselenium-page-factory\n=====================\n\nPython library provides page factory approach to implement page object model in selenium\n\nIntroduction.\n============\n\n* A Page Factory is one way of implementing a Page Object Model. In order to support the Page Object pattern.\n* As in Java we are using @findBy, here we are declaring all web element in dictionary.\nDictionary keys become WebElement / class member variable with having all extended WebElement methods.\n \n\nMain Features:\n=============\n\n* Initialise all the webElements declared in Point at a time.\n* All WebElements methods are re-define to add extra features eg- click method extended to have explicit wait.\n* Cent percent unittest coverage.\n\nInstallation\n=============\npip install:\n\n```shell\n> pip install selenium-page-factory\n```\n\nExamples\n=============\n1. Python - Unittest\n\n```python\nfrom seleniumpagefactory.Pagefactory import PageFactory\nimport unittest\nfrom selenium import webdriver\n\nclass LoginPage(PageFactory):\n\n def __init__(self,driver):\n # It is necessary to to initialise driver as page class member to implement Page Factory\n self.driver = driver\n\n # define locators dictionary where key name will became WebElement using PageFactory\n locators = {\n \"edtUserName\": ('ID', 'user_login'),\n \"edtPassword\": ('NAME', 'pwd'),\n \"btnSignIn\": ('XPATH', '//input[@value=\"Log In\"]')\n }\n\n def login(self):\n # set_text(), click_button() methods are extended methods in PageFactory\n self.edtUserName.set_text(\"opensourcecms\") # edtUserName become class variable using PageFactory\n self.edtPassword.set_text(\"opensourcecms\")\n self.btnSignIn.click_button()\n\n\nclass LoginTest(unittest.TestCase):\n\n def test_Login(self):\n driver = webdriver.Chrome()\n driver.get(\"https://s1.demo.opensourcecms.com/wordpress/wp-login.php\")\n\n pglogin = LoginPage(driver)\n pglogin.login()\n\nif __name__ == \"__main__\":\n unittest.main()\n```\n2. Python - Pytest\n\nInside test_Login.py\n```python\nimport pytest\nfrom selenium import webdriver\nfrom seleniumpagefactory.Pagefactory import PageFactory\n\ndef test_Login():\n driver = webdriver.Chrome(\"\")\n driver.get(\"https://s1.demo.opensourcecms.com/wordpress/wp-login.php\")\n\n pglogin = LoginPage(driver)\n pglogin.login()\n\nclass LoginPage(PageFactory):\n\n def __init__(self,driver):\n # It is necessary to to initialise driver as page class member to implement Page Factory\n self.driver = driver\n\n # define locators dictionary where key name will became WebElement using PageFactory\n locators = {\n \"edtUserName\": ('ID', 'user_login'),\n \"edtPassword\": ('NAME', 'pwd'),\n \"btnSignIn\": ('XPATH', '//input[@value=\"Log In\"]')\n }\n\n def login(self):\n # set_text(), click_button() methods are extended methods in PageFactory\n self.edtUserName.set_text(\"opensourcecms\") # edtUserName become class variable using PageFactory\n self.edtPassword.set_text(\"opensourcecms\")\n self.btnSignIn.click_button()\n```\n\nPre-Requisite\n=============\nEvery Page in Page Object Model should have WebDriver object as class member\nsame as above example.\n\nOr\n```python\nclass PageClass(PageFactory):\n\n def __init__(self,driver):\n self.driver = driver\n```", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/NayakwadiS/selenium-page-factory", "keywords": "selenium,page object model,pom,pages,page factory", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "selenium-page-factory", "package_url": "https://pypi.org/project/selenium-page-factory/", "platform": "", "project_url": "https://pypi.org/project/selenium-page-factory/", "project_urls": { "Homepage": "https://github.com/NayakwadiS/selenium-page-factory" }, "release_url": "https://pypi.org/project/selenium-page-factory/1.2/", "requires_dist": null, "requires_python": "", "summary": "Python library provides page factory approach to implement page object model in selenium", "version": "1.2" }, "last_serial": 5814398, "releases": { "1.1": [ { "comment_text": "", "digests": { "md5": "62b58ea0ff83bd9c2d442989f18af86c", "sha256": "838d8044ccb314239467542351905215c23b318ca9232be501b6d3b93959862a" }, "downloads": -1, "filename": "selenium-page-factory-1.1.tar.gz", "has_sig": false, "md5_digest": "62b58ea0ff83bd9c2d442989f18af86c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4394, "upload_time": "2019-09-06T03:55:55", "url": "https://files.pythonhosted.org/packages/57/91/c7849b4c56993e20fe522e166e31b2d31eaf090466704e6502d7ce03fc7b/selenium-page-factory-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "95554e1999f6d775e2ac3f7e33f5ba3b", "sha256": "12a5aeb510e2ac51c98e6c3b747b159358f4c99edb5f075ed39b907263f0e86c" }, "downloads": -1, "filename": "selenium-page-factory-1.2.tar.gz", "has_sig": false, "md5_digest": "95554e1999f6d775e2ac3f7e33f5ba3b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4437, "upload_time": "2019-09-11T11:31:51", "url": "https://files.pythonhosted.org/packages/8e/76/f356492d1a81cf1473326bac7ec6e64c8d83072b27558099705e367dfa47/selenium-page-factory-1.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "95554e1999f6d775e2ac3f7e33f5ba3b", "sha256": "12a5aeb510e2ac51c98e6c3b747b159358f4c99edb5f075ed39b907263f0e86c" }, "downloads": -1, "filename": "selenium-page-factory-1.2.tar.gz", "has_sig": false, "md5_digest": "95554e1999f6d775e2ac3f7e33f5ba3b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4437, "upload_time": "2019-09-11T11:31:51", "url": "https://files.pythonhosted.org/packages/8e/76/f356492d1a81cf1473326bac7ec6e64c8d83072b27558099705e367dfa47/selenium-page-factory-1.2.tar.gz" } ] }