Esempio n. 1
0
def actor_decides_to_click_back_until_reaches_product_search_page(
        context, actor_alias, element_name, max_number_pages, page_name):
    counter = 0
    while counter < int(max_number_pages):
        current_page_url = str(context.driver.current_url)
        # logging.debug(f"current_page_url -> {current_page_url}")
        if "tradedata/?code" in current_page_url:
            page = get_page_object("Search - Tradedata codes")
            find_and_click_on_page_element(context.driver, page.SELECTORS,
                                           element_name)
        elif "check-your-answers" in current_page_url:
            page = get_page_object("ImportTariff - CheckYourAnswers")
            find_and_click_on_page_element(context.driver, page.SELECTORS,
                                           element_name)
        elif "search/" in current_page_url:
            page = get_page_object(page_name)
            break
        elif "refine/?interaction" in current_page_url:
            page = get_page_object("Search - Refinement Interaction")
            find_and_click_on_page_element(context.driver, page.SELECTORS,
                                           element_name)
        else:
            error = f"Landed on unrecognized page after {counter} attempts!"
            assert False, error

        counter += 1
Esempio n. 2
0
def visit_page(context: Context, actor_alias: str, page_name: str):
    """Will visit specific page.

    NOTE:
    In order for the retry scheme to work properly you should have
    the webdriver' page load timeout set to value lower than the retry's
    `wait_fixed` timer, e.g `driver.set_page_load_timeout(time_to_wait=30)`
    """
    def is_special_case(page_name: str) -> bool:
        parts = page_name.split(" - ")
        return len(parts) == 3

    if not get_actor(context, actor_alias):
        add_actor(context, unauthenticated_actor(actor_alias))

    page = get_page_object(page_name)

    has_action(page, "visit")

    if is_special_case(page_name) and hasattr(page, "SubURLs"):
        subpage_name = page_name.split(" - ")[1].lower()
        special_url = page.SubURLs[subpage_name]
        logging.debug(
            f"{actor_alias} will visit '{page_name}' subpage using: '{special_url}"
        )
        page.visit(context.driver, page_name=subpage_name)
    else:
        logging.debug(
            f"{actor_alias} will visit '{page_name}' page using: '{page.URL}'")
        page.visit(context.driver)

    take_screenshot(context.driver, f"visit page {page_name}")
    accept_all_cookies(context.driver)
    check_for_errors(context.driver.page_source, context.driver.current_url)
    update_actor(context, actor_alias, visited_page=page)
Esempio n. 3
0
def click_on_link_element_in_page(context: Context,
                                  actor_alias: str,
                                  element_name: str,
                                  *,
                                  page_name: str = None):
    if page_name:
        page = get_page_object(page_name)
    else:
        page = get_last_visited_page(context, actor_alias)
    # logging.debug(page)
    has_action(page, "find_and_click")
    page.find_and_click(context.driver, element_selector_name=element_name)
Esempio n. 4
0
def actor_select_or_enter_random_data_click_continue_until_checkanswers_page(
        context, actor_alias, max_number_pages):
    counter = 0
    while counter < int(max_number_pages):
        current_page_url = str(context.driver.current_url)
        # logging.debug(f"current_page_url -> {current_page_url}")
        # time.sleep(1)
        if "tradedata/?code" in current_page_url:
            page = get_page_object("Search - Tradedata codes")
            has_action(page, "find_and_select_random_radio_and_click_continue")
            has_action(page, "searchcontinue")
            page.find_and_select_random_radio_and_click_continue(
                context.driver)
            page.searchcontinue(context.driver)
        elif "check-your-answers" in current_page_url:
            break
        elif "refine/?interaction" in current_page_url:
            try:
                page = get_page_object("Search - Refinement Interaction")
                has_action(page,
                           "find_and_select_random_radio_and_click_continue")
                page.find_and_select_random_radio_and_click_continue(
                    context.driver)
                # time.sleep(1)
                composition_text_element = context.driver.find_element_by_xpath(
                    "//*[@id=\"composition_message\"]")
                composition_text = str(composition_text_element.text)
                if "The numbers need to add up to 100." in composition_text:
                    page = get_page_object("Search - Refinement Interaction")
                    has_action(page,
                               "find_and_enter_random_composition_percent")
                    page.find_and_enter_random_composition_percent(
                        context.driver, "100")
                    find_and_click_on_page_element(context.driver,
                                                   page.SELECTORS, "Continue")
            except NoSuchElementException:
                pass
        counter += 1
Esempio n. 5
0
def click_on_page_element(context: Context,
                          actor_alias: str,
                          element_name: str,
                          *,
                          page_name: str = None):
    if page_name:
        page = get_page_object(page_name)
    else:
        page = get_last_visited_page(context, actor_alias)
    logging.debug(page)
    find_and_click_on_page_element(context.driver, page.SELECTORS,
                                   element_name)
    logging.debug("%s decided to click on '%s' on '%s' page", actor_alias,
                  element_name, page.NAME)
Esempio n. 6
0
def should_be_on_page(context: Context, actor_alias: str, page_name: str):
    page = get_page_object(page_name)
    # revisit_page_on_access_denied(context.driver, page, page_name)
    take_screenshot(context.driver, f"should be on {page_name}")
    check_for_errors(context.driver.page_source, context.driver.current_url)
    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}")
Esempio n. 7
0
def actor_should_be_able_to_enter_products_and_country(context, products,
                                                       country):
    page = get_page_object("GreatMagna - Dashboard")
    has_action(page, "fill_out_products_and_country")
    page.fill_out_products_and_country(context.driver, products, country)