func_tests/pages/adddatasenderspage/add_data_senders_page.py
# vim: ai ts=4 sts=4 et sw=4 encoding=utf-8
from framework.utils.common_utils import generateId
from pages.page import Page
import random
from framework.utils.data_fetcher import *
from pages.adddatasenderspage.add_data_senders_locator import *
from tests.allcontactstests.all_contacts_data import VALID_CONTACTS_WITH_WEB_ACCESS
from tests.alldatasenderstests.add_data_senders_data import *
from tests.alldatasenderstests.all_data_sender_data import REGISTRATION_SUCCESS_MESSAGE_TEXT
from tests.testsettings import UI_TEST_TIMEOUT
class AddDataSenderPage(Page):
def __init__(self, driver):
Page.__init__(self, driver)
def enter_email(self, registration_data):
email_address_prefix = fetch_(EMAIL_ADDRESS, from_(registration_data))
generated_email_address = email_address_prefix + generateId() + "@abc.com"
self.driver.find_text_box(EMAIL_TB).enter_text(generated_email_address)
def enter_data_sender_details_from(self, registration_data, unique_id=None, email=None):
"""
Function to enter and submit the data on add data sender page
Args:
registration_data is data to fill in the different fields like first
name, last name, telephone number and commune
Return self
"""
self.driver.find_text_box(NAME_TB).enter_text(
fetch_(NAME, from_(registration_data)))
self.driver.find_text_box(MOBILE_NUMBER_TB).enter_text(
fetch_(MOBILE_NUMBER, from_(registration_data)))
self.driver.find_text_box(COMMUNE_TB).enter_text(
fetch_(COMMUNE, from_(registration_data)))
self.driver.find_text_box(GPS_TB).enter_text(
fetch_(GPS, from_(registration_data)))
if email is not None:
self.driver.find_text_box(EMAIL_TB).enter_text(email)
if unique_id is not None:
self.set_unique_id(unique_id)
self.driver.find(REGISTER_BTN).click()
self.driver.wait_until_element_is_not_present(UI_TEST_TIMEOUT, by_css("span.loading"))
return self
def enter_data_sender_with_mobile_number(self, registration_data, unique_id=None, email=None):
mobile_number = fetch_(MOBILE_NUMBER, from_(registration_data))
random_mobile_number = ''.join(random.sample(mobile_number, 9))
self.driver.find_text_box(MOBILE_NUMBER_TB).enter_text(random_mobile_number)
if email is not None:
self.driver.find_text_box(EMAIL_TB).enter_text(email)
if unique_id is not None:
self.set_unique_id(unique_id)
self.driver.find(REGISTER_BTN).click()
self.driver.wait_until_element_is_not_present(UI_TEST_TIMEOUT, by_css("span.loading"))
return self
# def get_registered_datasender_id(self):
# message = self.get_success_message()
# assert REGISTRATION_SUCCESS_MESSAGE_TEXT in message
# data_sender_id = self._parse(message)
# return data_sender_id
def _parse(self, message):
return message.split(' ')[-1]
def get_error_message(self):
"""
Function to fetch the error messages from error label of the add data sender page
Return error message
"""
error_message = ""
self.driver.wait_for_element(UI_TEST_TIMEOUT, ERROR_MESSAGE_LABEL, True)
locators = self.driver.find_elements_(ERROR_MESSAGE_LABEL)
if locators:
for locator in locators:
error_message = error_message + locator.text
return error_message.replace("\n", " ")
def get_success_message(self):
locator = self.driver.wait_for_element(UI_TEST_TIMEOUT, FLASH_MESSAGE_LABEL, want_visible=True)
return locator.text
def get_rep_id_from_success_message(self, success_message):
return success_message.split(":")[1].strip()
def open_import_lightbox(self):
if not self.is_in_project_level():
return False
self.driver.find(OPEN_IMPORT_DIALOG_LINK).click()
from pages.lightbox.import_datasender_light_box_page import ImportDatasenderLightBox
return ImportDatasenderLightBox(self.driver)
def is_in_project_level(self):
return self.driver.get_title() in [u"Questionnaires - Expéditeurs", u"Questionnaires - Data Senders"]
def set_unique_id(self, unique_id):
checkbox_unique_id = self.driver.find(CB_LET_US_GENERATE_ID_FOR_U)
if checkbox_unique_id.get_attribute("checked") == "true":
checkbox_unique_id.click()
self.driver.find_text_box(UNIQUE_ID_TB_LOCATOR).enter_text(unique_id)
def unique_id_check_box_is_checked(self):
return self.driver.find(CB_LET_US_GENERATE_ID_FOR_U).get_attribute("checked") == u"true"
def unique_id_field_is_enabled(self):
return self.driver.find_text_box(UNIQUE_ID_TB_LOCATOR).is_enabled
def datasender_has_web_access(self):
return self.driver.is_element_present(by_id("email-li"))
def enter_datasender_mobile_number(self, mobile_number):
self.driver.find_text_box(MOBILE_NUMBER_TB).enter_text(mobile_number)
def navigate_to_datasender_page(self):
self.driver.find(by_id("cancel")).click()
def click_submit_button(self):
self.driver.find(REGISTER_BTN).click()
def close_add_datasender_dialog(self):
self.driver.find(CANCEL).click()
def create_contact(self, unique_id):
# self.driver = self.driver.navigate_to_add_a_data_sender_page()
self.enter_data_sender_with_mobile_number(VALID_CONTACTS_WITH_WEB_ACCESS,
unique_id=unique_id)
self.get_rep_id_from_success_message(
self.get_success_message()) if id is None else id
self.close_add_datasender_dialog()
# self.driver.search_with(self.unique_id)
# self.assertEquals(self.driver.get_cell_value(1, 7), self.unique_id)
class AddContactPage(AddDataSenderPage):
def __init__(self, driver):
AddDataSenderPage.__init__(self, driver)