Beispiel #1
0
def should_see_it_on(driver: WebDriver, page: ModuleType):
    take_screenshot(driver, NAME + page.NAME)
    selector = find_selector_by_name(page.SELECTORS, "language selector")
    language_selector = find_element(driver, selector, element_name="language selector")
    with assertion_msg(f"Language selector is not visible on {driver.current_url}"):
        assert language_selector.is_displayed()
        logging.debug(f"Language selector is visible on {driver.current_url}")
Beispiel #2
0
def search(driver: WebDriver, *, keyword: str = None, sector: str = None):
    input_field = find_element(driver,
                               SEARCH_INPUT,
                               element_name="Search input field",
                               wait_for_it=False)
    input_field.clear()
    if keyword:
        input_field.send_keys(keyword)
    if sector:
        sector_dropdown = find_element(
            driver,
            SEARCH_SECTOR,
            element_name="Sector dropdown menu",
            wait_for_it=False,
        )
        sector_value = "option[value='{}']".format(sector.upper().replace(
            " ", "_"))
        sector_option = sector_dropdown.find_element_by_css_selector(
            sector_value)
        sector_option.click()
    take_screenshot(driver, NAME + " after entering the keyword")
    button = find_element(driver,
                          SEARCH_BUTTON,
                          element_name="Search button",
                          wait_for_it=False)
    button.click()
    take_screenshot(driver, NAME + " after submitting the search form")
Beispiel #3
0
def open_guide(driver: WebDriver, guide_name: str):
    guide_name = guide_name.split(" - ")[1].strip()
    selector = Selector(By.PARTIAL_LINK_TEXT, guide_name)
    logging.debug("Looking for: {}".format(guide_name))
    guide = find_element(driver, selector, element_name="Guide card", wait_for_it=False)
    guide.click()
    take_screenshot(driver, PAGE_TITLE + " after opening " + guide_name)
Beispiel #4
0
def erp_should_see_correct_data_on_summary_page(context: Context,
                                                actor_alias: str):
    actor = get_actor(context, actor_alias)
    take_screenshot(context.driver, "should_see_correct_data_on_summary_page")
    erp.summary.should_see_correct_data_on_summary_page(
        context.driver, actor.forms_data)
    logging.debug(
        f"{actor_alias} saw: all expected data on the ERP Summary page")
def has_pagination(driver: WebDriver, min_page_num: int):
    scroll_to(driver, find_element(driver, PAGINATION))
    take_screenshot(driver, NAME)
    selectors = find_elements(driver, PAGES)
    with assertion_msg(
            f"Expected to see more that {min_page_num} search results page but got just {len(selectors)}"
    ):
        assert len(selectors) > min_page_num
Beispiel #6
0
def generic_should_be_able_to_print(context: Context, actor_alias: str):
    page = get_last_visited_page(context, actor_alias)
    has_action(page, "should_be_able_to_print")
    take_screenshot(context.driver, "should_be_able_to_print")
    page.should_be_able_to_print(context.driver)
    logging.debug(
        f"{actor_alias} is able to print out contents of: {context.driver.current_url}"
    )
def should_see_page_number(driver: WebDriver, page_num: int):
    scroll_to(driver, find_element(driver, ACTIVE_PAGE))
    take_screenshot(driver, NAME)
    selector = find_element(driver, ACTIVE_PAGE)

    with assertion_msg(
            f"Expected to see {page_num} but got {int(selector.text)}"):
        assert int(selector.text) == page_num
Beispiel #8
0
def open_article(driver: WebDriver, number: int):
    selector = Selector(By.CSS_SELECTOR, ARTICLE_LINK.format(number=number))
    link = find_element(driver, selector)
    if link.get_attribute("target") == "_blank":
        href = link.get_attribute("href")
        driver.get(href)
    else:
        link.click()
    take_screenshot(driver, NAME + " after clicking on article link")
Beispiel #9
0
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")
Beispiel #10
0
def open(driver: WebDriver, group: str, element: str):
    selector = SELECTORS[group.lower()][element.lower()]
    link = find_element(driver,
                        selector,
                        element_name=element,
                        wait_for_it=True)
    check_if_element_is_visible(link, element_name=element)
    link.click()
    take_screenshot(driver,
                    NAME + " after clicking on: %s link".format(element))
Beispiel #11
0
def search(driver: WebDriver, country: str, category: str):
    form_selectors = SELECTORS["search form"]
    find_a_marketplace = find_element(driver,
                                      SEARCH_BUTTON,
                                      element_name="find a marketplace")
    scroll_to(driver, find_a_marketplace)
    details = generate_form_details(country, category)
    pick_option(driver, form_selectors, form_details=details)
    find_a_marketplace.click()
    take_screenshot(driver, "After submitting the form")
Beispiel #12
0
def pick_radio_option_and_submit(driver: WebDriver, name: str) -> ModuleType:
    radio_selectors = get_selectors(SELECTORS["form"], ElementType.RADIO)
    choose_one_form_option(driver, radio_selectors, name)
    take_screenshot(driver, "Before submitting the form")
    button = find_element(
        driver, SUBMIT_BUTTON, element_name="Submit button", wait_for_it=False
    )
    button.click()
    take_screenshot(driver, "After submitting the form")
    return POs[name.lower()]
def pick_random_radio_option_and_submit(driver: WebDriver, ignored: List[str]):
    radio_selectors = get_selectors(SELECTORS["form"], ElementType.RADIO)
    selected = choose_one_form_option_except(driver, radio_selectors, ignored)
    take_screenshot(driver, "Before submitting the form")
    button = find_element(driver,
                          SUBMIT_BUTTON,
                          element_name="Submit button",
                          wait_for_it=False)
    button.click()
    take_screenshot(driver, "After submitting the form")
    return POs[selected.lower()]
Beispiel #14
0
def find_trade_office(driver: WebDriver, post_code: str):
    form_selectors = SELECTORS["form"]
    details = {"postcode": post_code}
    fill_out_input_fields(driver, form_selectors, details)
    take_screenshot(driver, "After filling out the form")
    button = find_element(driver,
                          SEARCH_BUTTON,
                          element_name="Search button",
                          wait_for_it=False)
    button.click()
    take_screenshot(driver, "After submitting the form")
Beispiel #15
0
def open_profile(driver: WebDriver, number: int):
    profile_links = find_elements(driver, PROFILE_LINKS)
    if number == 0:
        link = random.choice(profile_links)
    elif number == 1:
        link = profile_links[0]
    else:
        link = profile_links[0]
    logging.debug(f"Will click on profile link: {link.text}")
    link.click()

    take_screenshot(driver, NAME + " after clicking on company profile link")
Beispiel #16
0
def erp_should_see_number_of_product_categories_to_expand(
        context: Context, actor_alias: str, comparison_description: str):
    comparison_details = get_comparison_details(comparison_description)

    page = get_last_visited_page(context, actor_alias)
    has_action(page, "should_see_number_of_product_categories_to_expand")
    take_screenshot(context.driver,
                    "should_see_number_of_product_categories_to_expand")
    check_for_errors(context.driver.page_source, context.driver.current_url)
    page.should_see_number_of_product_categories_to_expand(
        context.driver, comparison_details)
    logging.debug(
        f"{actor_alias} saw: {comparison_description} product categories(s) to expand"
    )
Beispiel #17
0
def search(driver: WebDriver, *, keyword: str = None, sector: str = None):
    search_box_selector = find_selector_by_name(SELECTORS, "search box")
    input_field = find_element(driver,
                               search_box_selector,
                               element_name="Search box",
                               wait_for_it=False)
    input_field.clear()
    input_field.send_keys(keyword)
    take_screenshot(driver, NAME + " after entering the keyword")
    find_and_click_on_page_element(driver,
                                   SELECTORS,
                                   element_name="search button",
                                   wait_for_it=False)
    take_screenshot(driver, NAME + " after submitting the search form")
Beispiel #18
0
def search(driver: WebDriver, *, keyword: str = None, sector: str = None):
    """
    sector is not used, but kept for compatibility with search() in other POs.
    """
    input_field = find_element(
        driver, SEARCH_INPUT, element_name="Search input field", wait_for_it=False
    )
    input_field.clear()
    if keyword:
        input_field.send_keys(keyword)
    take_screenshot(driver, NAME + " after entering the keyword")
    button = find_element(
        driver, SEARCH_BUTTON, element_name="Search button", wait_for_it=False
    )
    button.click()
    take_screenshot(driver, NAME + " after submitting the search form")
Beispiel #19
0
def menu_items_should_be_visible(context: Context):
    ids = [
        "great-header-nav-mobile", "great-header-mobile-nav",
        "great-header-nav"
    ]
    for value in ids:
        try:
            element = context.driver.find_element(by=By.ID, value=value)
            break
        except NoSuchElementException:
            continue
    else:
        raise
    with selenium_action(context.driver, f"Menu items should be visible"):
        take_screenshot(context.driver, "mobile menu")
        assert element.is_displayed()
def pick_radio_option_and_submit(driver: WebDriver, name: str) -> ModuleType:
    radio_selectors = get_selectors(SELECTORS["form"], ElementType.RADIO)
    choose_one_form_option(driver, radio_selectors, name)
    take_screenshot(driver, "Before submitting the form")
    button = find_element(driver,
                          SUBMIT_BUTTON,
                          element_name="Submit button",
                          wait_for_it=False)
    button.click()
    take_screenshot(driver, "After submitting the form")
    POs = {
        "export opportunities service": contact_us_triage_export_opportunities,
        "your account on great.gov.uk": contact_us_triage_great_account,
        "other": None,
    }
    return POs[name.lower()]
Beispiel #21
0
def open(driver: WebDriver,
         group: str,
         element: str,
         *,
         same_tab: bool = True):
    selector = SELECTORS[group.lower()][element.lower()]
    link = find_element(driver,
                        selector,
                        element_name=element,
                        wait_for_it=False)
    check_if_element_is_visible(link, element_name=element)
    if same_tab:
        href = link.get_attribute("href")
        logging.debug("Opening '%s' link '%s' in the same tab", element, href)
        driver.get(href)
    else:
        with wait_for_page_load_after_action(driver):
            link.click()
    take_screenshot(driver,
                    NAME + " after clicking on: %s link".format(element))
Beispiel #22
0
def should_be_on_page(context: Context, actor_alias: str, page_name: str):
    page = get_page_object(page_name)
    page_source = context.driver.page_source
    revisit_page_on_access_denied(context.driver, page, page_name)
    take_screenshot(context.driver, f"should be on {page_name}")
    check_for_errors(page_source, context.driver.current_url)
    accept_all_cookies(context.driver)
    has_action(page, "should_be_here")
    if hasattr(page, "SubURLs"):
        special_page_name = page_name.split(" - ")[1].lower()
        if signature(page.should_be_here).parameters.get("page_name"):
            page.should_be_here(context.driver, page_name=special_page_name)
        else:
            raise TypeError(
                f"{page.__name__}.should_be_here() doesn't accept 'page_name' keyword "
                f"argument but it should as this Page Object has 'SubURLs' attribute."
            )
    else:
        page.should_be_here(context.driver)
    update_actor(context, actor_alias, visited_page=page)
    logging.debug(
        f"{actor_alias} is on {page.SERVICE} - {page.NAME} - {page.TYPE} -> "
        f"{page}")
Beispiel #23
0
def close_video(driver: WebDriver):
    take_screenshot(driver, NAME + " before closing video modal window")
    close_button = find_element(driver, CLOSE_VIDEO)
    close_button.click()
Beispiel #24
0
def open_profile(driver: WebDriver, number: int):
    selector = Selector(By.CSS_SELECTOR, COMPANY_PROFILE_LINK.format(number=number))
    link = find_element(driver, selector)
    link.click()
    take_screenshot(driver, NAME + " after clicking on company profile link")