Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_seed_url_absolute(base_url, driver):
url_template = "https://www.test.com/"
class MyPage(Page):
URL_TEMPLATE = url_template
page = MyPage(driver, base_url)
assert url_template == page.seed_url
def test_seed_url_keywords_multiple_params_special(base_url, driver):
value = ("foo", "mozilla&co")
page = Page(driver, base_url, key=value)
seed_url = page.seed_url
assert "key=foo" in seed_url
assert "key=mozilla%26co" in seed_url
import re
assert re.match(
r"{}\?key=(foo|mozilla%26co)&key=(foo|mozilla%26co)".format(base_url), seed_url
)
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
from pypom import Page
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as expected
from selenium.webdriver.support.select import Select
from pages.auth0 import Auth0
from tests import restmail
class Base(Page):
URL_TEMPLATE = '/{locale}'
_logout_locator = (By.ID, 'nav-logout')
_pending_approval_locator = (By.ID, 'pending-approval')
_account_created_successfully_locator = (By.CSS_SELECTOR, 'div.alert:nth-child(2)')
# Not logged in
_sign_in_button_locator = (By.ID, 'nav-login')
def __init__(self, selenium, base_url, locale='en-US', **url_kwargs):
super(Base, self).__init__(selenium, base_url, locale=locale, **url_kwargs)
@property
def page_title(self):
return self.wait.until(lambda s: self.selenium.title)
"""Represent the Discovery Pane page."""
from pypom import Page, Region
from selenium.webdriver.common.by import By
class DiscoveryPane(Page):
"""Contain the locators and actions relating to the discovery pane."""
_root_locator = (By.CLASS_NAME, 'App')
_extensions_locator = (By.CLASS_NAME, 'extension')
_discopane_error_alert_locator = (
By.CSS_SELECTOR, '#discover-error .alert')
_discopane_header_locator = (By.CLASS_NAME, 'DiscoPane-header')
_discovery_list_item_locator = (By.ID, 'category-discover')
_see_more_btn_locator = (By.CLASS_NAME, 'DiscoPane-amo-link')
_themes_locator = (By.CLASS_NAME, 'theme')
def _wait_for_page_to_load(self):
"""Wait for page load."""
self.wait.until(
lambda s: s.find_element(
*self._discovery_list_item_locator).is_displayed())
import itertools
from pypom import Page, Region
from selenium.webdriver.common.by import By
class TreeherderPage(Page):
_get_next_10_locator = (By.CSS_SELECTOR, 'div.btn:nth-child(1)')
_get_next_20_locator = (By.CSS_SELECTOR, 'div.btn:nth-child(2)')
_get_next_50_locator = (By.CSS_SELECTOR, 'div.btn:nth-child(3)')
_pushes_locator = (By.CSS_SELECTOR, '.push:not(.row)')
def __init__(self, driver, base_url=None, timeout=20, **url_kwargs):
super(TreeherderPage, self).__init__(driver, base_url, timeout, **url_kwargs)
def wait_for_page_to_load(self):
self.wait.until(lambda s: len(self.all_jobs) >= 1)
return self
@property
def all_jobs(self):
return list(itertools.chain.from_iterable(
from pypom import Page, Region
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as expected
class Search(Page):
_search_box_locator = (By.CLASS_NAME, 'AutoSearchInput-query')
_submit_button_locator = (By.CLASS_NAME, 'AutoSearchInput-submit-button')
_search_filters_sort_locator = (By.ID, 'SearchFilters-Sort')
_search_filters_type_locator = (By.ID, 'SearchFilters-AddonType')
_search_filters_os_locator = (By.ID, 'SearchFilters-OperatingSystem')
def wait_for_page_to_load(self):
self.wait.until(
expected.invisibility_of_element_located(
(By.CLASS_NAME, 'LoadingText')))
return self
@property
def result_list(self):
return self.SearchResultList(self)
from pypom import Page, Region
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
class Base(Page):
_url = '{base_url}/{locale}'
_amo_header = (By.CLASS_NAME, 'Header')
def __init__(self, selenium, base_url, locale='en-US', **kwargs):
super(Base, self).__init__(
selenium, base_url, locale=locale, timeout=30, **kwargs)
def wait_for_page_to_load(self):
self.wait.until(
lambda _: self.find_element(*self._amo_header).is_displayed())
return self
@property
def header(self):
return Header(self)
def test_seed_url_keywords_params_space(base_url, driver):
value = "a value"
page = Page(driver, base_url, key=value)
assert "{}?key={}".format(base_url, "a+value") == page.seed_url
"""Base page."""
from pypom import Page, Region
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
class Base(Page):
_save_btn_locator = (By.CSS_SELECTOR, "#save-btn")
def __init__(self, selenium, base_url, locale="en-US", **kwargs):
super(Base, self).__init__(
selenium, base_url, locale=locale, timeout=30, **kwargs
)
def wait_for_page_to_load(self):
self.wait.until(
EC.presence_of_element_located(self._page_wait_locator)
)
return self
@property
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
# You can obtain one at http://mozilla.org/MPL/2.0/.
from selenium.webdriver.common.by import By
from pypom import Page
class Base(Page):
_login_locator = (By.ID, 'login')
_logout_locator = (By.ID, 'logout')
_notification_locator = (By.CLASS_NAME, 'flash')
def click_login(self):
self.find_element(*self._login_locator).click()
from pages.login import LoginPage
return LoginPage(self.selenium, self.base_url)
def click_logout(self):
self.find_element(*self._logout_locator).click()
def login(self, username, password):
login_page = self.click_login()
return login_page.login(username, password)