NAME = "Product search" SERVICE = Service.ERP TYPE = PageType.FORM URL = None PAGE_TITLE = "" SubURLs = { f"{NAME} (Developing country)": URLs.ERP_DEVELOPING_COUNTRY_PRODUCT_SEARCH.absolute, f"{NAME} (UK business)": URLs.ERP_BUSINESS_PRODUCT_SEARCH.absolute, f"{NAME} (UK consumer)": URLs.ERP_CONSUMER_PRODUCT_SEARCH.absolute, f"{NAME} (UK importer)": URLs.ERP_IMPORTER_PRODUCT_SEARCH.absolute, } SubURLs = {key.lower(): val for key, val in SubURLs.items()} NAMES = list(SubURLs.keys()) PRODUCT_CATEGORIES_SELECTOR = Selector(By.CSS_SELECTOR, "#content form a.govuk-link") PRODUCT_CODES_SELECTOR = Selector(By.CSS_SELECTOR, "button.search-product-select-button") SELECTORS = {} SELECTORS.update(common_selectors.ERP_HEADER) SELECTORS.update(common_selectors.ERP_BETA) SELECTORS.update(common_selectors.ERP_BACK) SELECTORS.update(common_selectors.ERP_SEARCH_FORM) SELECTORS.update(common_selectors.ERP_SEARCH_RESULTS) SELECTORS.update(common_selectors.ERP_HIERARCHY_CODES) SELECTORS.update(common_selectors.ERP_FOOTER) # This is only for an exporter from developing country SELECTORS.update(common_selectors.ERP_SAVE_FOR_LATER) def visit(driver: WebDriver, *, page_name: str = None):
pick_option, submit_form, tick_captcha_checkbox, tick_checkboxes, ) NAME = "Contact Supplier" SERVICE = Service.FAS TYPE = PageType.CONTACT_US URL = URLs.FAS_CONTACT_SUPPLIER.absolute_template PAGE_TITLE = "Find a Buyer - GREAT.gov.uk" SELECTORS = { "form": { "itself": Selector(By.CSS_SELECTOR, "#content form"), "given name": Selector(By.ID, "id_given_name", type=ElementType.INPUT), "family name": Selector(By.ID, "id_family_name", type=ElementType.INPUT), "company name": Selector(By.ID, "id_company_name", type=ElementType.INPUT), "country": Selector(By.ID, "id_country", type=ElementType.INPUT), "email": Selector(By.ID, "id_email_address", type=ElementType.INPUT), "industry": Selector(By.ID, "id_sector", type=ElementType.SELECT), "subject": Selector(By.ID, "id_subject", type=ElementType.INPUT), "message":
go_to_url, submit_form, tick_captcha_checkbox, tick_checkboxes, ) from pages.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",
submit_form, tick_captcha_checkbox, tick_checkboxes, ) from pages.domestic import contact_us_short_domestic_thank_you NAME = "Long (Business details)" SERVICE = Service.DOMESTIC TYPE = PageType.CONTACT_US URL = URLs.CONTACT_US_EXPORT_ADVICE_BUSINESS.absolute PAGE_TITLE = "Welcome to great.gov.uk" SELECTORS = { "form": { "itself": Selector(By.CSS_SELECTOR, "#lede form"), "uk private or public limited company": Selector(By.CSS_SELECTOR, "input[value='LIMITED']", type=ElementType.RADIO), "other type of uk organisation": Selector(By.CSS_SELECTOR, "input[value='OTHER']", type=ElementType.RADIO), "organisation name": Selector(By.ID, "id_business-organisation_name", type=ElementType.INPUT), "postcode": Selector(By.ID, "id_business-postcode", type=ElementType.INPUT), "industry":
check_for_sections, check_url, fill_out_input_fields, submit_form, ) from pages.erp import consumer_other_changes_after_brexit NAME = "What percentage of your production do these goods make up (UK importer)" SERVICE = Service.ERP TYPE = PageType.FORM URL = URLs.ERP_IMPORTER_PRODUCTION_PERCENTAGE.absolute PAGE_TITLE = "" SELECTORS = { "form": { "selection form": Selector(By.CSS_SELECTOR, "#content form[method='post']"), "step counter": Selector( By.CSS_SELECTOR, "form[method=post] span.govuk-caption-l" ), "heading": Selector(By.CSS_SELECTOR, "form[method=post] h1"), "percentage": Selector( By.ID, "id_production-percentage-production_cost_percentage", type=ElementType.INPUT, is_visible=True, ), "continue": Selector( By.CSS_SELECTOR, "#content > form button.govuk-button", type=ElementType.SUBMIT, next_page=consumer_other_changes_after_brexit,
from selenium.webdriver.remote.webdriver import WebDriver from directory_tests_shared.enums import PageType, Service from pages.common_actions import ( Selector, assertion_msg, check_for_expected_sections_elements, ) NAME = "Share on Facebook" SERVICE = Service.FACEBOOK TYPE = PageType.SHARE URL = urljoin("https://www.facebook.com/", "share.php?u=") PAGE_TITLE = "Facebook" SELECTORS = {"general": {"header": Selector(By.ID, "homelink")}} def should_be_here(driver: WebDriver): check_for_expected_sections_elements(driver, SELECTORS) def extract_shared_url(url: str) -> str: parsed_initial_url = urlparse.urlparse(url) initial_url_query_parameters = urlparse.parse_qs(parsed_initial_url.query) next_parameter = initial_url_query_parameters["next"][0] parsed_next_url = urlparse.urlparse(next_parameter) next_url_query_parameters = urlparse.parse_qs(parsed_next_url.query) shared_url = next_url_query_parameters["u"][0] return shared_url
"real estate": URLs.INTERNATIONAL_INDUSTRY_REAL_ESTATE.absolute, "retail": URLs.INTERNATIONAL_INDUSTRY_RETAIL.absolute, "space": URLs.INTERNATIONAL_INDUSTRY_SPACE.absolute, "sports economy": URLs.INTERNATIONAL_INDUSTRY_SPORTS_ECONOMY.absolute, "technology": URLs.INTERNATIONAL_INDUSTRY_TECHNOLOGY.absolute, } SELECTORS = { "industry breadcrumbs": { "great.gov.uk international": Selector(By.CSS_SELECTOR, "#breadcrumb-section ol > li:nth-child(1) > a"), "industries": Selector(By.CSS_SELECTOR, "#breadcrumb-section ol > li:nth-child(2) > a"), }, "content": { "section 1": Selector(By.ID, "sector-section-one"), "section 2": Selector(By.ID, "sector-section-two"), "section statistics": Selector(By.ID, "sector-statistics-section"), }, "next steps": { "next steps": Selector(By.ID, "sector-next-steps-section"), "i want to invest in the uk": Selector(By.CSS_SELECTOR, "#sector-next-steps-section div:nth-child(1) > a"),
check_if_element_is_visible, check_url, find_element, find_elements, go_to_url, take_screenshot, wait_for_page_load_after_action, ) NAME = "Landing" SERVICE = Service.FAS TYPE = PageType.LANDING URL = URLs.FAS_LANDING.absolute PAGE_TITLE = "Find UK suppliers - trade.great.gov.uk" SEARCH_INPUT = Selector(By.CSS_SELECTOR, "#search-area form input[name=q]") SEARCH_SECTOR = Selector(By.ID, "id_industries") SEARCH_BUTTON = Selector(By.CSS_SELECTOR, "#search-area > form button") CONTACT_US_BUTTON = Selector(By.CSS_SELECTOR, "#introduction-section a") INDUSTRY_CARDS = Selector(By.CSS_SELECTOR, "#industries-section a.labelled-image-card") SELECTORS = { "hero": { "itself": Selector(By.CSS_SELECTOR, "section#hero") }, "find uk suppliers": { "itself": Selector(By.ID, "search-area"), "search term input": SEARCH_INPUT, "search selectors dropdown": SEARCH_SECTOR, "find suppliers button": SEARCH_BUTTON, },
fill_out_input_fields, submit_form, ) from pages.erp import uk_importer_are_goods_used_to_make_something_else from pages.erp.autocomplete_callbacks import autocomplete_country NAME = "Where do you import from (UK importer)" SERVICE = Service.ERP TYPE = PageType.FORM URL = URLs.ERP_IMPORTER_WHICH_COUNTRIES.absolute PAGE_TITLE = "" SELECTORS = { "form": { "form itself": Selector(By.CSS_SELECTOR, "#content form[method='post']"), "country": Selector( By.ID, "id_which-countries-import_countries_autocomplete", type=ElementType.INPUT, is_visible=False, autocomplete_callback=autocomplete_country, ), "continue": Selector( By.CSS_SELECTOR, "#content > form button.govuk-button", type=ElementType.SUBMIT, next_page=uk_importer_are_goods_used_to_make_something_else, ),
Selector, check_url, fill_out_input_fields, find_element, go_to_url, take_screenshot, ) NAME = "New Office Finder" SERVICE = Service.DOMESTIC TYPE = PageType.LANDING URL = URLs.CONTACT_US_OFFICE_FINDER.absolute PAGE_TITLE = "Welcome to great.gov.uk" SEARCH_BUTTON = Selector(By.CSS_SELECTOR, "button.button", type=ElementType.BUTTON) SELECTORS = { "form": { "itself": Selector(By.CSS_SELECTOR, "form[method=get]"), "postcode": Selector(By.ID, "id_postcode", type=ElementType.INPUT), "search": SEARCH_BUTTON, } } def visit(driver: WebDriver): go_to_url(driver, URL, NAME) def should_be_here(driver: WebDriver):
contact_us_long_export_advice_comment, contact_us_office_finder, contact_us_short_domestic, contact_us_triage_great_services, domestic_eu_exit_contact_us, ukef_your_details, ) NAME = "What can we help you with?" SERVICE = Service.DOMESTIC TYPE = PageType.DOMESTIC_CONTACT_US URL = URLs.CONTACT_US_DOMESTIC.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"), "find your local trade office": Selector( By.CSS_SELECTOR, "input[value='trade-office']", type=ElementType.RADIO, is_visible=False, ), "advice to export from the uk": Selector( By.CSS_SELECTOR, "input[value='export-advice']", type=ElementType.RADIO, is_visible=False,
check_for_sections, check_url, fill_out_input_fields, go_to_url, submit_form, ) NAME = "Enter your confirmation code (LTD, PLC or Royal Charter)" SERVICE = Service.PROFILE TYPE = PageType.FORM URL = URLs.PROFILE_ENROL_EMAIL_VERIFICATION.absolute PAGE_TITLE = "" SELECTORS = { "enrolment progress bar": { "itself": Selector(By.ID, "progress-column") }, "confirmation code message": { "message": Selector(By.CSS_SELECTOR, "#user-account-verification-header-container p") }, "an option to resend the code": { "resend my code": Selector(By.CSS_SELECTOR, "section form a") }, "confirmation code form": { "itself": Selector(By.CSS_SELECTOR, "section form"), "code": Selector(By.ID, "id_verification-code", type=ElementType.INPUT), "submit":