Overview
Page object model made easy.
Free software: BSD 2-Clause License
Installation
pip install selenium-elements
Documentation
To use the project:
from contextlib import contextmanager
import pytest
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.expected_conditions import staleness_of
from selenium.webdriver.support.wait import WebDriverWait
from selenium_elements.conditions import clickable
from selenium_elements.elements import PageElement, PageElements, RegionElements
from selenium_elements.page import Page, Region
from selenium_elements.validators import title_matches, url_contains
@contextmanager
def wait_for_page_load(driver, timeout=30):
old_page = driver.find_element_by_tag_name("html")
yield
WebDriverWait(driver, timeout).until(staleness_of(old_page))
class Show(Page):
path = "/show/{show_slug}/"
validators = [title_matches("^[a-zA-Z]+ | PBS$"), url_contains("pbs.org/")]
official_website_btn = PageElement(By.CLASS_NAME, "btn--visit", condition=clickable)
@property
def official_website_link(self):
return self.official_website_btn.get_attribute("href")
class PromoShowRegion(Region):
title_element = PageElement(By.CLASS_NAME, "carousel--show-strip__image-link")
def open(self):
with wait_for_page_load(self.driver):
self.title_element.click()
return Show(driver=self.driver, base_url=self.base_url, visit=False)
def title(self):
return self.title_element.get_attribute("data-gtm-label")
class Home(Page):
path = "/"
load_timeout = 30
validators = [
title_matches("^PBS: Public Broadcasting Service$"),
url_contains("pbs.org/"),
]
promo_show_elements = PageElements(
By.CLASS_NAME, "show-promo", find_on_page_load=True
)
promo_shows = RegionElements(
region_class=PromoShowRegion, root_element=promo_show_elements
)
@pytest.fixture
def driver():
driver = webdriver.Chrome()
yield driver
driver.quit()
def test_foo(driver):
home = Home(driver=driver, base_url="https://www.pbs.org")
for show in home.promo_shows:
print(show.title())
show = home.promo_shows[0].open()
print(show.official_website_link)
assert True
Release files for selenium-elements 0.0.2
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-elements-0.0.2.tar.gz | 10.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| selenium_elements-0.0.2-py2.py3-none-any.whl | Python 3, Python 2 | none | any | Details |
Total release size: 19.2 kB
Release files / selenium-elements-0.0.2.tar.gz
| Download URL | selenium-elements-0.0.2.tar.gz |
|---|---|
| Size | 10.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4f963e83d4487cbc688ebb85ba8895da96745140c3216d83398d0f6a3d4b7fae
|
|
BLAKE2b-256 checksum How to use checksums |
f19d1792d588e18dc01fa945a7033e8ef86d31984cd4b34037b553305c0faaf1
|
| 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.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.2
|
Release files / selenium_elements-0.0.2-py2.py3-none-any.whl
| Download URL | selenium_elements-0.0.2-py2.py3-none-any.whl |
|---|---|
| Size | 8.5 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
0d042a739580b2d8c3a1bcccadf95d0ee3251e4cece300661f44c50d4ee25bcb
|
|
BLAKE2b-256 checksum How to use checksums |
be27e4025953ecf3f26ce025dbbd18e692c3467ddd7ddb6e9ff81ebc580c4976
|
| 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.8.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.2
|