def js_country_select(driver: WebDriver, *, value): """Select random country from an input field with JS autocompletion. This callback works on following pages: * HPO contact form - high-potential-opportunities/contact/ """ option_values = extract_attributes_by_css( driver.page_source, "#js-country-select-select option", attrs=["value"], text=True, ) # ignore options with no value and flatten the dict to a list option_values = [item["text"] for item in option_values if item["value"]] logging.debug(f"Available countries: {option_values}") value = random.choice(option_values) logging.debug(f"Selected country: {value}") js_field = find_element(driver, Selector(By.ID, "js-country-select")) js_field.click() js_field.clear() js_field.send_keys(value) first_suggestion_selector = Selector( By.CSS_SELECTOR, "#js-country-select__listbox li:nth-child(1)") first_suggestion = find_element(driver, first_suggestion_selector, wait_for_it=True) first_suggestion.click()
def enrol_autocomplete_company_name(driver: WebDriver, value: str = None): """Value is ignored as we want to choose random company name""" autocomplete = Selector( By.CSS_SELECTOR, "ul.SelectiveLookupDisplay", is_visible=True ) find_element(driver, autocomplete, element_name="Autocomplete", wait_for_it=True) options = find_elements(driver, Selector(By.CSS_SELECTOR, "li[role='option']")) option = random.choice(options) logging.debug( f"Selected company: {option.get_attribute('data-value')} {option.text}" ) option.click()
def autocomplete_company_name(driver: WebDriver): autocomplete = Selector( By.CSS_SELECTOR, "ul.SelectiveLookupDisplay", is_visible=True ) find_element(driver, autocomplete, element_name="Autocomplete", wait_for_it=True) options = find_elements( driver, Selector(By.CSS_SELECTOR, "li[role='option']", is_visible=True) ) option = random.choice(options) logging.debug( f"Autocomplete selected country name: {option.get_attribute('data-value')} {option.text}" ) option.click()
def find_and_select_random_radio_and_click_next(driver: WebDriver): parent_div_radio_element = driver.find_element_by_class_name("m-b-xs") time.sleep(2) child_radio_div_elements = parent_div_radio_element.find_elements_by_xpath("//input[@type='radio']"); RADIO_SELECTORS_DICT = {} for index in range(len(child_radio_div_elements)): child_radio_element = child_radio_div_elements[index] key_name = "radio" + str(index) radio_element_xpath = f"//input[@id='" + str(child_radio_element.get_attribute("id")) + "']" key_value = Selector(By.XPATH, radio_element_xpath, type=ElementType.RADIO) if index == 0: rsdict = {} rsdict[key_name] = key_value RADIO_SELECTORS_DICT["product radio info"] = rsdict else: rsdict = RADIO_SELECTORS_DICT["product radio info"] rsdict[key_name] = key_value RADIO_SELECTORS_DICT.clear() RADIO_SELECTORS_DICT["product radio info"] = rsdict radio_selectors = RADIO_SELECTORS_DICT["product radio info"] check_random_radio(driver, radio_selectors) nextbtnclick(driver)
def open_industry(driver: WebDriver, industry_name: str): industry_name = industry_name.split(" - ")[1].strip() selector = Selector(By.PARTIAL_LINK_TEXT, industry_name) logging.debug("Looking for: {}".format(industry_name)) industry_link = find_element(driver, selector, element_name="Industry card", wait_for_it=False) industry_link.click() take_screenshot(driver, NAME + " after opening " + industry_name + " page")
def should_see_marketplaces(driver: WebDriver, country: str): expected_countries = [country, "Global"] markets_selector = Selector(By.CSS_SELECTOR, "div.market-item-inner") marketplace_countries = { marketplace.find_element_by_tag_name("a") .text: marketplace.find_element_by_css_selector( "div.market-item-inner p.market-operating-countries" ) .text for marketplace in find_elements(driver, markets_selector) } error = f"Found marketplace without a list of countries it operates in" assert marketplace_countries, error for marketplace, countries in marketplace_countries.items(): with assertion_msg( f"{marketplace} does not operate in '{country}' or Globally!" f"but in '{countries}' instead" ): assert any(country in countries for country in expected_countries) logging.debug( f"{marketplace} operates in '{country}' or Globally! -> {countries}" )
from browserpages import ElementType, common_selectors from browserpages.common_actions import ( Selector, check_for_sections, check_url, go_to_url, scroll_to, ) NAME = "Trade Finance" SERVICE = Service.DOMESTIC TYPE = PageType.CONTENT URL = URLs.DOMESTIC_TRADE_FINANCE.absolute PAGE_TITLE = "Get finance - great.gov.uk" PROMO_VIDEO = Selector(By.CSS_SELECTOR, "section.get-finance-video video") BREADCRUMB_LINKS = Selector(By.CSS_SELECTOR, "nav.breadcrumbs a") SELECTORS = { "hero": { "itself": Selector(By.ID, "get-finance-hero"), "header": Selector(By.CSS_SELECTOR, "#get-finance-hero h1"), "description": Selector(By.CSS_SELECTOR, "#get-finance-hero p"), "logo": Selector(By.CSS_SELECTOR, "#get-finance-hero img"), }, "ukef breadcrumbs": { "great.gov.uk": Selector(By.CSS_SELECTOR, "nav.breadcrumbs li:nth-child(1) > a"), "ukef": Selector(By.CSS_SELECTOR, "nav.breadcrumbs li:nth-child(2) > a"), }, "tell us about your business": {
check_if_element_is_not_present, check_if_element_is_visible, check_url, find_element, find_selector_by_name, find_elements, go_to_url, pick_option, is_element_present, submit_form, check_random_radio, take_screenshot, wait_for_page_load_after_action, fill_out_input_fields, fill_out_email_address) NAME = "Contact us Page" SERVICE = Service.GREATMAGNA TYPE = PageType.DASHBOARD URL = URLs.GREAT_MAGNA_CONTACT_US.absolute PAGE_TITLE = "Contact us Page" SELECTORS = { "contact us": { "please give detail": Selector(By.CSS_SELECTOR, "textarea[id=\"id_comment\"]"), "first name": Selector(By.CSS_SELECTOR, "#id_given_name"), "last name": Selector(By.CSS_SELECTOR, "#id_family_name"), "contact email": Selector(By.CSS_SELECTOR, "#id_email"), "tick": Selector(By.CSS_SELECTOR, "#id_terms_agreed-label"), "submit": Selector(By.CSS_SELECTOR, "button[class=\"button button--large\"]") }, } def visit(driver: WebDriver, *, page_name: str = None):
# "funding-financing-and-getting-paid/get-paid/insure-against-non-payment/": urljoin(URL, # "funding-financing-and-getting-paid/get-paid/insure-against-non-payment/"), # "funding-financing-and-getting-paid/get-paid/how-create-export-invoice/": urljoin(URL, # "funding-financing-and-getting-paid/get-paid/how-create-export-invoice/"), # "funding-financing-and-getting-paid/get-paid/decide-when-get-paid-export-orders/": urljoin(URL, # "funding-financing-and-getting-paid/get-paid/decide-when-get-paid-export-orders/"), # "funding-financing-and-getting-paid/get-paid/payment-methods-exporters/": urljoin(URL, # "funding-financing-and-getting-paid/get-paid/payment-methods-exporters/"), # "funding-financing-and-getting-paid/exchange-rates-and-moving-money/managing-exchange-rates/": urljoin(URL, # "funding-financing-and-getting-paid/exchange-rates-and-moving-money/managing-exchange-rates/"), } SELECTORS = { "categories": { "get started": Selector(By.XPATH, "//*[@id=\"learn-root\"]/section/a[1]"), "identify opportunities": Selector( By.XPATH, "//p[contains(text(),'Learn to identify opportunities abroad and find th')]" ), "prepare to sell": Selector(By.XPATH, "//*[@id=\"learn-root\"]/section/a[3]/article"), "regulations licensing and logistics": Selector(By.XPATH, "//*[@id=\"learn-root\"]/section/a[4]/article"), "funding finance and getting paid": Selector(By.XPATH, "//*[@id=\"learn-root\"]/section/a[5]/article"), "continue learning": Selector(By.XPATH, "//a[contains(text(),'Continue learning')]"), }, }
from browserpages import common_selectors from browserpages.common_actions import ( Selector, check_for_sections, check_url, find_elements, go_to_url, ) NAME = "Updates for non UK companies on EU Exit" SERVICE = Service.INTERNATIONAL TYPE = PageType.CONTENT URL = URLs.INTERNATIONAL_BREXIT_NEWS.absolute PAGE_TITLE = "" SUBMIT_BUTTON = Selector(By.CSS_SELECTOR, "form[method=POST] button") ARTICLES = Selector(By.CSS_SELECTOR, "li.article a") SELECTORS = { "hero": { "itself": Selector(By.ID, "hero"), "header": Selector(By.CSS_SELECTOR, "#hero h1"), "text": Selector(By.CSS_SELECTOR, "#hero p"), }, "articles": { "itself": Selector(By.ID, "article-list-page"), "breadcrumbs": Selector(By.CSS_SELECTOR, "#article-list-page .breadcrumbs"), "great.gov.uk": Selector( By.CSS_SELECTOR, ".breadcrumbs a[href='/international/']" ), "article list": Selector(By.CSS_SELECTOR, "ul.content-list"), "articles": Selector(By.CSS_SELECTOR, "li.article"),
take_screenshot, wait_for_page_load_after_action, fill_out_input_fields, fill_out_email_address ) NAME = "Marketing Approach" SERVICE = Service.BUILD_AN_EXPORT_PLAN TYPE = PageType.BUILD_AN_EXPORT_PLAN URL = URLs.GREAT_MAGNA_EXPORT_PLAN_MARKETING_APPROACH.absolute PAGE_TITLE = "Marketing Approach Page" SELECTORS = { "marketing approach": { "open": Selector( By.XPATH, "//span[contains(text(),'open')]" ), "close": Selector( By.XPATH, "//span[contains(text(),'close')]" ), "check box": Selector( By.CSS_SELECTOR, "#target-age-groups > form > ul > li:nth-child(1) > label" ), "0-14 year olds": Selector( By.CSS_SELECTOR, "#target-age-groups > form > ul > li:nth-child(1) > label" ), "15-19": Selector( By.XPATH, "//label[contains(text(),'15-19 year olds')]" ), "20-24": Selector( By.CSS_SELECTOR, "//input[@id='20-24']"
from selenium.webdriver.remote.webdriver import WebDriver from great_magna_tests_shared import URLs from great_magna_tests_shared.enums import PageType, Service from browserpages import common_selectors from browserpages.common_actions import Selector, check_for_sections, check_url, go_to_url NAME = "Regions" SERVICE = Service.INTERNATIONAL TYPE = PageType.LANDING URL = URLs.INTERNATIONAL_REGIONS.absolute PAGE_TITLE = "Invest in Great Britain - " SELECTORS = { "regions list": { "scotland": Selector(By.PARTIAL_LINK_TEXT, "Scotland"), "northern ireland": Selector(By.PARTIAL_LINK_TEXT, "Northern Ireland"), "north of england": Selector(By.PARTIAL_LINK_TEXT, "North of England"), "wales": Selector(By.PARTIAL_LINK_TEXT, "Wales"), "midlands": Selector(By.PARTIAL_LINK_TEXT, "Midlands"), "south of england": Selector(By.PARTIAL_LINK_TEXT, "South of England"), }, "the uk map": { "the uk map - svg": Selector(By.CSS_SELECTOR, "svg.uk-map"), "scotland - svg": Selector(By.ID, "scotland"), "northern ireland - svg": Selector(By.ID, "northern-ireland"), "north of england - svg": Selector(By.ID, "north-england"), "wales - svg": Selector(By.ID, "wales"), "midlands - svg": Selector(By.ID, "midlands"), "south of england - svg": Selector(By.ID, "south-england"), },
check_if_element_is_not_present, check_if_element_is_visible, check_url, find_element, find_selector_by_name, find_elements, go_to_url, pick_option, is_element_present, submit_form, check_random_radio, take_screenshot, wait_for_page_load_after_action, fill_out_input_fields, fill_out_email_address) NAME = "Sign out" SERVICE = Service.GREATMAGNA TYPE = PageType.SEARCH URL = URLs.GREAT_MAGNA_SIGN_OUT.absolute PAGE_TITLE = "Sign out Page" SELECTORS = { "sign out": { "avatar": Selector(By.XPATH, "///header/nav[1]/div[1]/ul[1]/li[4]/div[1]/button[1]"), "sign out": Selector( By.XPATH, "//body/div[2]/div[1]/div[1]/ul[1]/li[6]/button[1]" # //span[contains(text(),'Sign out')] ), "skipwalkthrough": Selector(By.XPATH, "//*[@id=\"page-tour-skip\"]"), }, } def visit(driver: WebDriver, *, page_name: str = None): go_to_url(driver, URL, page_name or NAME)
assertion_msg, check_url, find_element, find_elements, find_selector_by_name, go_to_url, scroll_to, take_screenshot, ) NAME = "Search results" SERVICE = Service.DOMESTIC TYPE = PageType.SEARCH_RESULTS URL = URLs.DOMESTIC_SEARCH.absolute PAGES = Selector(By.CSS_SELECTOR, "ol.navigation li") PAGINATION = Selector(By.CSS_SELECTOR, "div.pagination") ACTIVE_PAGE = Selector(By.CSS_SELECTOR, ".pagination span.active") NEXT = Selector(By.CSS_SELECTOR, ".pagination a.pagination-next") PREVIOUS = Selector(By.CSS_SELECTOR, "a.pagination-previous[rel=prev]") SUBMIT_BUTTON = Selector( By.CSS_SELECTOR, "#search-again-input ~ input[type=submit]", type=ElementType.BUTTON ) SEARCH_RESULTS = Selector(By.CSS_SELECTOR, "ul.results li") SELECTORS = { "form": { "search box": Selector(By.ID, "search-again-input", type=ElementType.INPUT), "search button": SUBMIT_BUTTON, }, "results": { "itself": Selector(By.ID, "search-results-list"),
go_to_url, take_screenshot, ) from browserpages.domestic import ( contact_us_short_domestic, contact_us_triage_great_account_dedicated_support_content as SUPPORT_CONTENT, ) NAME = "Great.gov.uk account" SERVICE = Service.DOMESTIC TYPE = PageType.DOMESTIC_CONTACT_US URL = URLs.CONTACT_US_GREAT_ACCOUNT.absolute PAGE_TITLE = "Welcome to great.gov.uk" SUBMIT_BUTTON = Selector( By.CSS_SELECTOR, "div.exred-triage-form button", type=ElementType.BUTTON ) SELECTORS = { "form": { "itself": Selector(By.CSS_SELECTOR, "#lede form"), "i have not received an email confirmation": Selector( By.CSS_SELECTOR, "input[value='no-email-confirmation']", type=ElementType.RADIO, is_visible=False, ), "i need to reset my password": Selector( By.CSS_SELECTOR, "input[value='password-reset']", type=ElementType.RADIO, is_visible=False,
Selector, check_for_sections, check_url, go_to_url, wait_for_page_load_after_action, ) from browserpages.domestic import actions as domestic_actions NAME = "Advice landing" TYPE = PageType.LANDING SERVICE = Service.DOMESTIC URL = URLs.DOMESTIC_ADVICE.absolute PAGE_TITLE = "Welcome to great.gov.uk" ARTICLE_LINKS = Selector( By.CSS_SELECTOR, "#-list-section a", type=ElementType.LINK ) SELECTORS = { "advice & guidance tiles": { "itself": Selector(By.CSS_SELECTOR, "#-list-section"), "cards": Selector(By.CSS_SELECTOR, "#-list-section div.card"), "articles": ARTICLE_LINKS, "article images": Selector(By.CSS_SELECTOR, "#-list-section .card-image"), # "upskill now": { # "itseld": Selector(By.CSS_SELECTOR,"#content > div:nth-child(3) > div > div.cta-container > a"), # } } } SELECTORS.update(common_selectors.DOMESTIC_HEADER) SELECTORS.update(common_selectors.BREADCRUMBS) SELECTORS.update(common_selectors.DOMESTIC_HERO_WO_LINK)
wait_for_page_load_after_action, fill_out_input_fields, fill_out_email_address ) NAME = "DashboardHeader" SERVICE = Service.GREATMAGNA TYPE = PageType.DASHBOARD URL = URLs.GREAT_MAGNA_DASHBOARD.absolute PAGE_TITLE = "Dashboard Page " SELECTORS = { "dashboard": { "learn to export": Selector( By.CSS_SELECTOR, "#header-link-learning" # "//a[@id='header-link-learning']" ), "where to Export": Selector( By.CSS_SELECTOR, "#header-link-markets" # //a[@id='header-link-markets']" ), "build an export plan": Selector( By.CSS_SELECTOR, "#header-link-exporting-plan" # "//a[@id='header-link-exporting-plan']" ), "sign out": Selector( By.XPATH, "//body/div[2]/div[1]/div[1]/ul[1]/li[6]/button[1]" # //span[contains(text(),'Sign out')] ), "skipwalkthrough": Selector( By.XPATH, "//*[@id=\"page-tour-skip\"]" ), "avatar": Selector( By.CSS_SELECTOR, "#header-link-user-profile > div > button"
# -*- coding: utf-8 -*- """Events Home Page Object.""" import logging from selenium.webdriver.common.by import By from selenium.webdriver.remote.webdriver import WebDriver from great_magna_tests_shared import URLs from great_magna_tests_shared.enums import PageType, Service from browserpages.common_actions import Selector, check_url, go_to_url, wait_for_visibility NAME = "Home" SERVICE = Service.EVENTS TYPE = PageType.HOME URL = URLs.EVENTS_LANDING.absolute GREAT_LOGO = Selector(By.CSS_SELECTOR, "div.event-logo") SELECTORS = {"general": {"great.gov.uk logo": GREAT_LOGO}} def visit(driver: WebDriver): go_to_url(driver, URL, NAME) def should_be_here(driver: WebDriver): wait_for_visibility(driver, GREAT_LOGO, time_to_wait=15) check_url(driver, URL, exact_match=False) logging.debug("All expected elements are visible on '%s' page", NAME)
"""International - Transition period enquiries - Thank you page""" from selenium.webdriver.common.by import By from selenium.webdriver.remote.webdriver import WebDriver from great_magna_tests_shared import URLs from great_magna_tests_shared.enums import PageType, Service from browserpages.common_actions import Selector, check_url, go_to_url NAME = "Transition period enquiries" SERVICE = Service.INTERNATIONAL TYPE = PageType.THANK_YOU URL = URLs.CONTACT_US_INTERNATIONAL_TRANSITION_PERIOD_CONTACT_SUCCESS.absolute PAGE_TITLE = "Welcome to great.gov.uk - buy from or invest in the UK" LANGUAGE_SELECTOR = Selector( By.CSS_SELECTOR, "#international-header-bar .LanguageSelectorDialog-Tracker") SUBMIT_BUTTON = Selector(By.CSS_SELECTOR, "form[method=POST] button") SELECTORS = { "header bar": { "itself": Selector(By.ID, "international-header-bar") }, "header-menu": { "itself": Selector(By.ID, "international-header-menu"), "logo": Selector(By.ID, "international-header-logo"), "breadcrumbs": Selector(By.CSS_SELECTOR, ".breadcrumbs"), }, "success": { "itself": Selector(By.ID, "success-message-container"), "header": Selector(By.CSS_SELECTOR, "#success-message-container h1"), "text": Selector(By.CSS_SELECTOR, "#success-message-container p"),
check_url, fill_out_input_fields, go_to_url, submit_form, ) NAME = "Your details" SERVICE = Service.DOMESTIC TYPE = PageType.UKEF_CONTACT_US URL = URLs.DOMESTIC_GET_FINANCE_YOUR_DETAILS.absolute PAGE_TITLE = "Welcome to great.gov.uk" SELECTORS = { "breadcrumbs": { "itself": Selector(By.CSS_SELECTOR, "nav.breadcrumbs"), "current page": Selector(By.CSS_SELECTOR, "nav.breadcrumbs li[aria-current='page']"), "links": Selector(By.CSS_SELECTOR, "nav.breadcrumbs a"), }, "form": { "itself": Selector(By.CSS_SELECTOR, "#content form"), "heading": Selector(By.CSS_SELECTOR, "#heading-container h1"), "first name": Selector(By.ID, "id_your-details-firstname", type=ElementType.INPUT), "last name": Selector(By.ID, "id_your-details-lastname", type=ElementType.INPUT), "position":
from great_magna_tests_shared import URLs from great_magna_tests_shared.enums import PageType, Service from browserpages import common_selectors from browserpages.common_actions import Selector, check_for_sections, check_url, go_to_url NAME = "You cannot create an account" SERVICE = Service.PROFILE TYPE = PageType.FORM URL = URLs.PROFILE_ENROL_OVERSEAS_BUSINESS.absolute PAGE_TITLE = "" SELECTORS = { "explanation": { "heading": Selector(By.CSS_SELECTOR, "#content div > h1"), "back": Selector(By.PARTIAL_LINK_TEXT, "Back"), "visit our site for international businesses": Selector(By.PARTIAL_LINK_TEXT, "visit our site for international businesses."), } } SELECTORS.update(common_selectors.DOMESTIC_HEADER) SELECTORS.update(common_selectors.BREADCRUMBS) SELECTORS.update(common_selectors.DOMESTIC_FOOTER) def visit(driver: WebDriver): go_to_url(driver, URL, NAME)
wait_for_page_load_after_action, fill_out_input_fields, fill_out_email_address ) NAME = "Protect your business from bribery and corruption" SERVICE = Service.LEARNTOEXPORT TYPE = PageType.LESSON URL = URLs.GREAT_MAGNA_LESSONS_PROTECT_YOUR_BUSINESS_FROM_BRIBERY_AND_CORRUPTION.absolute PAGE_TITLE = "Protect your business from bribery and corruption" SELECTORS = { "protect your business from bribery and corruption": { "lesson yes checkbox": Selector( By.XPATH, "//label[contains(text(),'Yes')]" ), "continue learning": Selector( By.XPATH, "//a[contains(text(),'Continue learning')]" ), "bottom back": Selector( By.XPATH, "//body/main[@id='content']/div[1]/div[3]/a[1]/i[1]" ), "top back": Selector( By.XPATH, "//*[@id=\"content\"]/div/a/i" ), "open case study" :Selector( By.XPATH, "//button[contains(text(),'Open case study')]" ), "close case study": Selector( By.XPATH, "//*[@id=\"case_study\"]/div/button"
check_if_element_is_not_present, check_if_element_is_visible, check_url, find_element, find_selector_by_name, find_elements, go_to_url, pick_option, is_element_present, submit_form, check_random_radio, take_screenshot, wait_for_page_load_after_action, fill_out_input_fields, fill_out_email_address) NAME = "forgotten password" SERVICE = Service.GREATMAGNA TYPE = PageType.SEARCH URL = URLs.GREAT_MAGNA_FORGOTTEN_PASSWORD.absolute PAGE_TITLE = "Forgotten password Page" SELECTORS = { "forgotten password": { "emailaddress": Selector(By.XPATH, "//input[@id='id_email']", type=ElementType.INPUT), "resetmypassword": Selector(By.XPATH, "//button[contains(text(),'Reset my password')]"), "newpassword": Selector(By.XPATH, "//input[@id='id_password1']", type=ElementType.INPUT), "confirmpassword": Selector(By.XPATH, "//input[@id='id_password2']", type=ElementType.INPUT), "changepassword": Selector(By.XPATH, "//button[@class='button']"), }, }
go_to_url, pick_option, submit_form, ) from browserpages.profile import enrol_enter_your_details NAME = "Enter your business details [step 2]" NAMES = ["Enter your business details [step 2] (LTD, PLC or Royal Charter)"] SERVICE = Service.PROFILE TYPE = PageType.FORM URL = URLs.PROFILE_ENROL_BUSINESS_DETAILS.absolute SubURLs = {"enter your business details [step 2] (ltd, plc or royal charter)": URL} PAGE_TITLE = "" INDUSTRY = Selector( By.ID, "id_business-details-sectors", is_visible=False, type=ElementType.SELECT ) WEBSITE = Selector( By.ID, "id_business-details-website", is_visible=False, type=ElementType.INPUT ) SELECTORS = { "enrolment progress bar": {"itself": Selector(By.ID, "progress-column")}, "enter your business details": { "itself": Selector(By.CSS_SELECTOR, "section form"), "heading": Selector(By.CSS_SELECTOR, "h2"), "text": Selector(By.ID, "form-step-body-text"), "company name": Selector(By.ID, "id_business-details-company_name"), "industry": INDUSTRY, "website": WEBSITE, "submit": Selector( By.CSS_SELECTOR,
go_to_url, submit_form, tick_captcha_checkbox, tick_checkboxes, ) from browserpages.profile import enrol_enter_your_confirmation_code NAME = "Enter your email address and set a password (LTD, PLC or Royal Charter)" SERVICE = Service.PROFILE TYPE = PageType.FORM URL = URLs.PROFILE_ENROL_USER_ACCOUNT.absolute PAGE_TITLE = "" SELECTORS = { "breadcrumbs": { "itself": Selector(By.CSS_SELECTOR, "nav.breadcrumbs") }, "enrolment progress bar": { "itself": Selector(By.ID, "progress-column") }, "registration form": { "itself": Selector(By.CSS_SELECTOR, "section form"), "email": Selector(By.ID, "id_user-account-email", type=ElementType.INPUT, is_visible=False), "password": Selector(By.ID, "id_user-account-password",
find_element, find_selector_by_name, find_elements, go_to_url, pick_option, is_element_present, submit_form, check_random_radio, take_screenshot, wait_for_page_load_after_action, fill_out_input_fields, fill_out_email_address) NAME = "Regulations licensing and logistics" SERVICE = Service.LEARNTOEXPORT TYPE = PageType.LESSON URL = URLs.GREAT_MAGNA_LESSONS_REGULATIONS_LICENSING_AND_LOGISTICS.absolute PAGE_TITLE = "Regulations licensing and logistics page" SELECTORS = { "Regulations licensing and logistics": { "how to adapt your labelling and packaging": Selector( By.XPATH, "//span[contains(text(),'How to adapt your labelling and packaging')]" ), "understand duties and taxes": Selector(By.XPATH, "//span[contains(text(),'Understand duties and taxes')]"), "Regulations around supplying a service": Selector( By.XPATH, "//span[contains(text(),'Understand regulations around supplying a service')]" ), "freight forwarders": Selector(By.XPATH, "//span[contains(text(),'Freight forwarders')]"), "understand data regulations and data protection": Selector( By.XPATH, "//span[contains(text(),'Understand data regulations and data protection')]"
check_if_element_is_not_present, check_if_element_is_visible, check_url, find_element, find_selector_by_name, find_elements, go_to_url, pick_option, is_element_present, submit_form, check_random_radio, take_screenshot, wait_for_page_load_after_action, fill_out_input_fields, fill_out_email_address) NAME = "Ease of entry into a new market" SERVICE = Service.LEARNTOEXPORT TYPE = PageType.LESSON URL = URLs.GREAT_MAGNA_LESSONS_EASE_OF_ENTRY_INTO_A_NEW_MARKET.absolute PAGE_TITLE = "Ease of entry into a new market" SELECTORS = { "ease of entry into a new market": { "lesson yes checkbox": Selector(By.XPATH, "//label[contains(text(),'Yes')]"), "continue learning": Selector(By.XPATH, "//a[contains(text(),'Continue learning')]"), "bottom back": Selector(By.XPATH, "//body/main[@id='content']/div[1]/div[3]/a[1]/i[1]"), "top back": Selector(By.XPATH, "//*[@id=\"content\"]/div/a/i"), "open case study": Selector(By.XPATH, "//button[contains(text(),'Open case study')]"), "close case study": Selector(By.XPATH, "//*[@id=\"case_study\"]/div/button"), "view all lessons": Selector(By.XPATH, "//a[contains(text(),'View all lessons')]"), "view transcript": Selector(By.XPATH, "//span[contains(text(),'View transcript')]"),
wait_for_page_load_after_action, fill_out_input_fields, fill_out_email_address, fill_out_textarea_fields, ) NAME = "Funding and credit" SERVICE = Service.BUILD_AN_EXPORT_PLAN TYPE = PageType.BUILD_AN_EXPORT_PLAN URL = URLs.GREAT_MAGNA_EXPORT_PLAN_FUNDING_AND_CREDIT.absolute PAGE_TITLE = "Funding and credit Page" SELECTORS = { "funding and credit": { "estimate": Selector(By.CSS_SELECTOR, "#finance-total-export-cost > div > div.m-b-xs > button"), "estimate input": Selector(By.XPATH, "//input[@id='override_estimated_total_cost']", type=ElementType.INPUT), "how much funding": Selector(By.XPATH, "//input[@id='funding_amount_required']", type=ElementType.INPUT), "lesson": Selector(By.CSS_SELECTOR, "#finance-funding-credit-options > button"), "add a funding option": Selector( By.XPATH, "//body/main/div[2]/div/div/div[2]/div/div[3]/div[1]/table/tfoot/tr/td/button" ),
wait_for_page_load_after_action, fill_out_input_fields, fill_out_email_address, fill_out_textarea_fields, ) NAME = "Getting Paid" SERVICE = Service.BUILD_AN_EXPORT_PLAN TYPE = PageType.BUILD_AN_EXPORT_PLAN URL = URLs.GREAT_MAGNA_EXPORT_PLAN_GETTING_PAID.absolute PAGE_TITLE = "Getting Paid Page" SELECTORS = { "getting paid": { "payment methods": Selector( By.CSS_SELECTOR, "#getting-paid > div > div:nth-child(1) > div.select.m-b-l > div > div.select__placeholder.text-blue-deep-60.bg-white.radius" ), "payment methods notes": Selector( By.CSS_SELECTOR, "#method_notes", type=ElementType.INPUT ), "payment terms": Selector( By.CSS_SELECTOR, "#getting-paid > div > div:nth-child(2) > div.select.m-b-l > div > div.select__placeholder.text-blue-deep-60.bg-white.radius" ), "payment terms notes": Selector( By.CSS_SELECTOR, "#payments_notes", type=ElementType.INPUT ), "incoterms": Selector( By.CSS_SELECTOR, "#getting-paid > div > div:nth-child(3) > div.select.m-b-l > div > div.select__placeholder.text-blue-deep-60.bg-white.radius" ),
find_element, find_selector_by_name, find_elements, go_to_url, pick_option, is_element_present, submit_form, check_random_radio, take_screenshot, wait_for_page_load_after_action, fill_out_input_fields, fill_out_textarea_fields, fill_out_email_address) NAME = "Business Objectives" SERVICE = Service.BUILD_AN_EXPORT_PLAN TYPE = PageType.BUILD_AN_EXPORT_PLAN URL = URLs.GREAT_MAGNA_EXPORT_PLAN_BUSINESS_OBJECTIVES.absolute PAGE_TITLE = "Business Objectives Page" SELECTORS = { "business objectives": { "business objectives": Selector( By.CSS_SELECTOR, "#export-plan-dashboard > div:nth-child(2) > div > a > div.p-t-s.p-b-xs.p-h-xs" ), "why you want to export example": Selector( By.CSS_SELECTOR, "#objectives-reasons > div > div.learning > div.learning__buttons.m-b-xs > button", type=ElementType.INPUT), "why you want to export": Selector(By.XPATH, "//textarea[@id='rationale']", type=ElementType.INPUT), "objective text": Selector( By.CSS_SELECTOR, "#description" # "//body/main[@id='content']/div[@id='business-objectives-content']/section[4]/div[1]/div[2]/div[2]/div[1]/div[1]/div[1]/div[1]/div[1]/textarea[1]"