def submit_sales_value(self, period, period_start_date, survey, value, question): value = Utilities.convert_blank_data_value(value) question_element = Utilities.get_question_code_element( survey, question) self.submit_default_period_dates(period, period_start_date) SeleniumCore.set_current_data_text(question_element, value)
def set_internet_sales_value(self, validation_type, value): if validation_type.lower() == 'poprrm': SeleniumCore.set_current_data_text( details.POPRRM_QUESTION_PRIMARY_ELEMENT, value) elif validation_type.lower() == 'popmrz': SeleniumCore.set_current_data_text( details.POPMRZ_QUESTION_PRIMARY_ELEMENT, value)
def set_total_turnover_sales_value(self, validation_type, value): if validation_type.lower() == 'poprrm': SeleniumCore.set_current_data_text( details.POPRRM_QUESTION_SECONDARY_ELEMENT, value) elif validation_type.lower() == 'popmrz': SeleniumCore.set_current_data_text( details.POPMRZ_QUESTION_SECONDARY_ELEMENT, value)
def login(self, username, password): SeleniumCore.wait_for_element_to_be_displayed(By.ID, LoginPage.USERNAME_FIELD) self.driver.find_elements_by_id( LoginPage.USERNAME_FIELD)[1].send_keys(username) self.driver.find_elements_by_id( LoginPage.PASSWORD_FIELD)[1].send_keys(password) self.driver.find_elements_by_name(LoginPage.LOGIN_BUTTON)[1].click()
def submit_pp_sales_values(self, validation_type, internet_sales, total_sales): global pp_internet_sales, pp_total_sales pp_internet_sales = Utilities.convert_blank_data_value(internet_sales) pp_total_sales = Utilities.convert_blank_data_value(total_sales) self.set_internet_sales_value(validation_type, pp_internet_sales) self.set_total_turnover_sales_value(validation_type, pp_total_sales) CheckValuesContributorDetails().save_the_application() SeleniumCore.close_the_current_window()
def run_the_validation_process(self, threshold_primary_value, exp_derived_value): SeleniumCore.set_current_data_text( details.THRESHOLD_PRIMARY_QUESTION_ELEMENT, threshold_primary_value) CheckValuesContributorDetails().save_the_application() actual_derived_val = SeleniumCore.get_attribute_element_text( By.ID, details.THRESHOLD_DERIVED_QUESTION_ELEMENT) ReportingHelper.check_single_message_matches('Q12', actual_derived_val, exp_derived_value)
def submit_single_value_for_multiple_questions(self, survey, questions_list, commodity_value): for question in questions_list: question_element = Utilities.get_question_code_element( survey, question) commodity_value = Utilities.convert_blank_data_value( commodity_value) SeleniumCore.set_current_data_text(question_element, commodity_value)
def run_the_validation_process(self, total_turnover_value, exp_derived_value): SeleniumCore.set_current_data_text( self.QUESTION_TOTAL_TURNOVER_ELEMENT, total_turnover_value) CheckValuesContributorDetails().save_the_application() actual_derived_val = SeleniumCore.get_attribute_element_text( *RsiContributorDetailsPage.QUESTION_DERIVED_ELEMENT) ReportingHelper.check_single_message_matches('Q7034', actual_derived_val, exp_derived_value)
def submit_pp_sales_values(self, period, period_start_date, internet_sales, total_sales): global pp_internet_sales, pp_total_sales pp_internet_sales = Utilities.convert_blank_data_value(internet_sales) pp_total_sales = Utilities.convert_blank_data_value(total_sales) SubmitContributorDetails().submit_default_period_dates( period, period_start_date) self.set_internet_sales_value(pp_internet_sales) self.set_total_turnover_sales_value(pp_total_sales) CheckValuesContributorDetails().save_the_application() SeleniumCore.close_the_current_window()
def get_all_the_periods(self, reference, period, sic_code): self.periods = [] self.periods = self.get_no_of_periods(self.periods) # Check if next button displayed then go to next page to get remaining periods while SeleniumCore.find_elements_by( *ContributorSearchPage.NEXT_BUTTON)[0].is_displayed(): SeleniumCore.find_elements_by( *ContributorSearchPage.NEXT_BUTTON)[0].click() time.sleep(2) self.periods = self.get_no_of_periods(self.periods) self.select_the_form_row(reference, period, sic_code) return self.periods
def submit_values_as_a_list_for_multiple_questions(self, survey, questions_list, commodity_values): if len(questions_list) > 1: count = 0 for question in questions_list: question_element = Utilities.get_question_code_element( survey, question) SeleniumCore.set_current_data_text( question_element, Utilities.convert_blank_data_value(commodity_values[count])) if len(commodity_values) > 1: count += 1
def run_the_validation_process(self, questions): questions_list = questions[0] comparing_question_value = Utilities.convert_blank_data_value(questions[1]) derived_question_value = Utilities.convert_blank_data_value(questions[2]) survey = Utilities.convert_blank_data_value(questions[3]) comparing_question_element = Utilities.get_question_code_element(survey, questions_list[0]) derived_question_element = Utilities.get_question_code_element(survey, questions_list[1]) SeleniumCore.set_current_data_text(comparing_question_element, comparing_question_value) CheckValuesContributorDetails().save_the_application() actual_derived_val = SeleniumCore.get_attribute_element_text(By.ID, derived_question_element) if derived_question_value == '': derived_question_value = '0' ReportingHelper.check_single_message_matches(questions_list[1], actual_derived_val, derived_question_value)
def override_the_validation(self, question, type_of_check): question_row = self.get_question_code_row_details( contributor_details.CURRENT_DATA_TAB_ELEMENT, question) check_boxes = question_row.find_elements_by_name( contributor_details.OVERRIDE_CHECKBOX_ELEMENT) count = 0 for i in range(0, len(check_boxes)): if type_of_check == 'validation' and check_boxes[i].get_attribute("checked") == "true" or \ type_of_check == 'override' and check_boxes[i].get_attribute("checked") != "true": check_boxes[i].click() count += 1 if count >= 1: SeleniumCore.find_elements_by( *contributor_details.OVERRIDE_BUTTON)[0].click()
def select_the_form_row(self, reference, period, sic_code): table = SeleniumCore.wait_for_element_to_be_displayed( By.ID, "ResultsTable") rows = table.find_elements_by_tag_name("tr") # Ignore the first row for i in range(1, len(rows)): cols = rows[i].find_elements_by_tag_name("td") # Check to see the sic code exists if sic_code: ReportingHelper.check_single_message_matches( reference, cols[i + 6].text, sic_code) # Check to see if any references appear that shouldn't be there if cols[1].text == reference and cols[2].text == period: view_form = rows[i].find_elements_by_tag_name("button") SeleniumCore.select_view_form(view_form[0]) break
def get_no_of_periods(self, periods): table = SeleniumCore.wait_for_element_to_be_displayed( By.ID, "ResultsTable") rows = table.find_elements_by_tag_name("tr") for i in range(1, len(rows)): cols = rows[i].find_elements_by_tag_name("td") periods.append(cols[2].text) return periods
def get_question_code_row_details(self, table_name, question): table = SeleniumCore.wait_for_element_to_be_displayed( By.ID, table_name) rows = table.find_elements_by_tag_name("tr") # Ignore the first row for i in range(1, len(rows)): cols = rows[i].find_elements_by_tag_name("td") # Check to see if the question code matches if cols[0].text == question: return rows[i]
def check_multiple_comment_text_messages(self, question_codes): survey = question_codes[0] questions_list = question_codes[1] commodity_values = Utilities.get_values_as_a_list(question_codes[2]) if len(questions_list) > 1: count = 0 for question in questions_list: question_element = Utilities.get_question_code_element( survey, question) question_actual_text = SeleniumCore.get_attribute_element_text( By.ID, question_element) commodity_value = Utilities.convert_blank_data_value( commodity_values[count]) ReportingHelper.check_single_message_matches( question_element, question_actual_text, commodity_value)
def submit_search_details(self, *search_types): reference = search_types[0] period = search_types[1] survey = search_types[2] if reference == 'empty': reference = '' elif period == 'empty': period = '' elif survey == 'empty': survey = '' SeleniumCore.set_element_text(self.REFERENCE_TEXT_FIELD, reference) SeleniumCore.set_element_text(self.PERIOD_TEXT_FIELD, period) SeleniumCore.set_element_text(self.SURVEY_TEXT_FIELD, survey) self.driver.find_element(*ContributorSearchPage.SEARCH_BUTTON).click()
def __init__(self): if self.current_page_title() == 'Search': SeleniumCore.switch_window() super().__init__('Data Clearing')
def set_period_end_date(self, value): SeleniumCore.set_current_data_text( contributor_details.PERIOD_END_DATE_ELEMENT, value)
def submit_single_value_per_question(self, survey, questions_list, commodity_value): question_element = Utilities.get_question_code_element( survey, questions_list) SeleniumCore.set_current_data_text(question_element, commodity_value)
def current_page_title(self): element = SeleniumCore.wait_for_element_to_be_displayed(By.XPATH, "//div[contains(@class,'header__title')]") return element.text
def save_the_application(self): DriverContext.driver.find_element( *contributor_details.SAVE_AND_VALIDATE).click() SeleniumCore.switch_to_alert_box() self.check_if_validation_status_changed()
def switch_to_the_tab(self, tab_name): elements = SeleniumCore.find_elements_by(*details.TAB_ELEMENTS) for ele in elements: if ele.text.lower() == tab_name.lower(): ele.click() break
def after_scenario(context, scenario): # take screenshot if test failed Utilities.take_screen_shot(scenario) SeleniumCore.close_the_current_window() LoginPage().logout()
def validate_the_previous_period_details(self, questions_and_values): SubmitContributorDetails().submit_values_for_survey_questions(questions_and_values) CheckValuesContributorDetails().save_the_application() SeleniumCore.close_the_current_window()
def set_internet_sales_value(self, value): SeleniumCore.set_current_data_text( self.QUESTION_INTERNET_SALES_ELEMENT, value)
def set_total_turnover_sales_value(self, value): SeleniumCore.set_current_data_text( self.QUESTION_TOTAL_TURNOVER_ELEMENT, value)
def get_derived_question_value(self): return int( SeleniumCore.get_attribute_element_text( *RsiContributorDetailsPage.QUESTION_DERIVED_ELEMENT))
def get_validation_status(self): return SeleniumCore.get_element_text(*contributor_details.STATUS)