{ "info": { "author": "Dan Claudiu Pop", "author_email": "danclaudiupop@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: BSD License", "Operating System :: Unix", "Programming Language :: Python", "Programming Language :: Python :: 3.7", "Topic :: Utilities" ], "description": "========\nOverview\n========\n\n\n\nPage object model made easy.\n\n* Free software: BSD 2-Clause License\n\nInstallation\n============\n\n::\n\n pip install selenium-elements\n\nDocumentation\n=============\n\n\nTo use the project:\n\n.. code-block:: python\n\n from contextlib import contextmanager\n\n import pytest\n from selenium import webdriver\n from selenium.webdriver.common.by import By\n from selenium.webdriver.support.expected_conditions import staleness_of\n from selenium.webdriver.support.wait import WebDriverWait\n\n from selenium_elements.conditions import clickable\n from selenium_elements.elements import PageElement, PageElements, RegionElements\n from selenium_elements.page import Page, Region\n from selenium_elements.validators import title_matches, url_contains\n\n\n @contextmanager\n def wait_for_page_load(driver, timeout=30):\n old_page = driver.find_element_by_tag_name(\"html\")\n yield\n WebDriverWait(driver, timeout).until(staleness_of(old_page))\n\n\n class Show(Page):\n path = \"/show/{show_slug}/\"\n validators = [title_matches(\"^[a-zA-Z]+ | PBS$\"), url_contains(\"pbs.org/\")]\n\n official_website_btn = PageElement(By.CLASS_NAME, \"btn--visit\", condition=clickable)\n\n @property\n def official_website_link(self):\n return self.official_website_btn.get_attribute(\"href\")\n\n\n class PromoShowRegion(Region):\n title_element = PageElement(By.CLASS_NAME, \"carousel--show-strip__image-link\")\n\n def open(self):\n with wait_for_page_load(self.driver):\n self.title_element.click()\n return Show(driver=self.driver, base_url=self.base_url, visit=False)\n\n def title(self):\n return self.title_element.get_attribute(\"data-gtm-label\")\n\n\n class Home(Page):\n path = \"/\"\n load_timeout = 30\n validators = [\n title_matches(\"^PBS: Public Broadcasting Service$\"),\n url_contains(\"pbs.org/\"),\n ]\n\n promo_show_elements = PageElements(\n By.CLASS_NAME, \"show-promo\", find_on_page_load=True\n )\n promo_shows = RegionElements(\n region_class=PromoShowRegion, root_element=promo_show_elements\n )\n\n\n @pytest.fixture\n def driver():\n driver = webdriver.Chrome()\n yield driver\n driver.quit()\n\n\n def test_foo(driver):\n home = Home(driver=driver, base_url=\"https://www.pbs.org\")\n for show in home.promo_shows:\n print(show.title())\n show = home.promo_shows[0].open()\n print(show.official_website_link)\n assert True\n\n\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/danclaudiupop/selenium_elements", "keywords": "selenium,tests,page model", "license": "BSD 2-Clause License", "maintainer": "", "maintainer_email": "", "name": "selenium-elements", "package_url": "https://pypi.org/project/selenium-elements/", "platform": "", "project_url": "https://pypi.org/project/selenium-elements/", "project_urls": { "Homepage": "https://github.com/danclaudiupop/selenium_elements" }, "release_url": "https://pypi.org/project/selenium-elements/0.0.2/", "requires_dist": [ "selenium" ], "requires_python": ">=3.7", "summary": "Page object model made easy.", "version": "0.0.2" }, "last_serial": 4989307, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "9d6b9d02001a23eb0cb5adc916f21f9c", "sha256": "6702dcb9edc7ddb05b6d41b2f918b5070080aded186b1199002cd54583ce3f96" }, "downloads": -1, "filename": "selenium_elements-0.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9d6b9d02001a23eb0cb5adc916f21f9c", "packagetype": "bdist_wheel", "python_version": "3.7", "requires_python": null, "size": 8354, "upload_time": "2019-03-14T11:31:09", "url": "https://files.pythonhosted.org/packages/70/49/2255a2c75e36cb22e0154a464ee60b133dac502ef0000b21f93064032279/selenium_elements-0.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c0e1e20a0323a44f6dc304dcd921d21c", "sha256": "c18d19f21869d57b968f79894ed95e7f35293f91b79592e1af17875bbb519045" }, "downloads": -1, "filename": "selenium-elements-0.0.1.tar.gz", "has_sig": false, "md5_digest": "c0e1e20a0323a44f6dc304dcd921d21c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11479, "upload_time": "2019-03-14T11:31:06", "url": "https://files.pythonhosted.org/packages/2c/99/c6ba9e2b7018ff06ba9d9fb88bab0bf5b71674b379cc3080c08ab6908e09/selenium-elements-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "9fb046aca8023a3dfad7bce9c0351606", "sha256": "0d042a739580b2d8c3a1bcccadf95d0ee3251e4cece300661f44c50d4ee25bcb" }, "downloads": -1, "filename": "selenium_elements-0.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9fb046aca8023a3dfad7bce9c0351606", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.7", "size": 8458, "upload_time": "2019-03-26T20:13:48", "url": "https://files.pythonhosted.org/packages/be/27/e4025953ecf3f26ce025dbbd18e692c3467ddd7ddb6e9ff81ebc580c4976/selenium_elements-0.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0da345024bf9def6d576bc9a781b633b", "sha256": "4f963e83d4487cbc688ebb85ba8895da96745140c3216d83398d0f6a3d4b7fae" }, "downloads": -1, "filename": "selenium-elements-0.0.2.tar.gz", "has_sig": false, "md5_digest": "0da345024bf9def6d576bc9a781b633b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 10702, "upload_time": "2019-03-26T20:13:49", "url": "https://files.pythonhosted.org/packages/f1/9d/1792d588e18dc01fa945a7033e8ef86d31984cd4b34037b553305c0faaf1/selenium-elements-0.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9fb046aca8023a3dfad7bce9c0351606", "sha256": "0d042a739580b2d8c3a1bcccadf95d0ee3251e4cece300661f44c50d4ee25bcb" }, "downloads": -1, "filename": "selenium_elements-0.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9fb046aca8023a3dfad7bce9c0351606", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.7", "size": 8458, "upload_time": "2019-03-26T20:13:48", "url": "https://files.pythonhosted.org/packages/be/27/e4025953ecf3f26ce025dbbd18e692c3467ddd7ddb6e9ff81ebc580c4976/selenium_elements-0.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0da345024bf9def6d576bc9a781b633b", "sha256": "4f963e83d4487cbc688ebb85ba8895da96745140c3216d83398d0f6a3d4b7fae" }, "downloads": -1, "filename": "selenium-elements-0.0.2.tar.gz", "has_sig": false, "md5_digest": "0da345024bf9def6d576bc9a781b633b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 10702, "upload_time": "2019-03-26T20:13:49", "url": "https://files.pythonhosted.org/packages/f1/9d/1792d588e18dc01fa945a7033e8ef86d31984cd4b34037b553305c0faaf1/selenium-elements-0.0.2.tar.gz" } ] }