コード例 #1
0
    def test_export(self):
        self.setUpFirefox()
        self.project_name = random_string()
        client = Client()
        client.login(username=self.admin_email_id, password='******')

        form_code = self._verify_questionnaire_creation(
            self.project_name, 'image.xlsx')
        project_temp_name, web_submission_page = navigate_and_verify_web_submission_page_is_loaded(
            self.driver, self.global_navigation_page, self.project_name)
        self._do_web_submission('submission_data_image.xml',
                                project_temp_name,
                                form_code,
                                self.admin_email_id,
                                'tester150411',
                                image_upload=True)
        self.driver.find(by_id('submission_log_link')).click()
        self.driver.find_visible_element(by_id('ignore_changes')).click()
        self._verify_submission_log_page_images(web_submission_page)

        self._do_web_submission('submission_data_image.xml',
                                project_temp_name,
                                form_code,
                                self.admin_email_id,
                                'tester150411',
                                image_upload=True)
        self._verify_submission_log_page_image_2(web_submission_page)

        self._verify_without_media(form_code)
        self._verify_with_media(form_code)
コード例 #2
0
    def test_dirty_dialog_behavior_for_add_new_language(self):
        self.change_reply_messages()
        self.language_page.select_add_new_language_option()
        self.assertTrue(self.is_warning_dialog_present())

        self.language_page.click_revert_changes_button()

        self.driver.wait_for_element(UI_TEST_TIMEOUT, by_id("add_new_language_pop"))
        self.language_page.save_new_language("new_lang"+random_string(4))
        self.assertEquals("Your language has been added successfully. Please translate the suggested automatic reply SMS text.",
                          self.language_page.get_success_message())

        self.driver.wait_until_element_is_not_present(UI_TEST_TIMEOUT, by_css(".success-message-box"))
        self.assertFalse(self.is_warning_dialog_present())

        self.language_page.select_language("English", True)

        self.assertFalse(self.is_warning_dialog_present())
        self.check_for_default_en_messages()

        self.language_page = CustomizedLanguagePage(self.driver)
        self.change_reply_messages()
        self.language_page.select_add_new_language_option()
        self.assertTrue(self.is_warning_dialog_present())

        self.language_page.click_save_changes_button()
        self.driver.wait_until_element_is_not_present(UI_TEST_TIMEOUT, by_css(".success-message-box"))
        self.driver.wait_for_element(UI_TEST_TIMEOUT, by_id("add_new_language_pop"))
        self.language_page.save_new_language("new_lang"+random_string(4))
        self.assertEquals("Your language has been added successfully. Please translate the suggested automatic reply SMS text.",
                          self.language_page.get_success_message())
        self.language_page.select_language("English", True)
        self.assertListEqual([msg + "new message" for msg in default_en_messages],  self.language_page.get_all_customized_reply_messages())
コード例 #3
0
    def test_successful_association_and_dissociation_of_data_sender(self):
        self.all_datasenders_page.search_with(
            self.datasender_id_without_web_access)
        self.assertEqual(
            "",
            self.all_datasenders_page.get_project_names(
                self.datasender_id_without_web_access))
        self.all_datasenders_page.associate_datasender_to_projects(
            self.datasender_id_without_web_access,
            ["clinic test project1", "clinic2 test project"])
        self.driver.wait_until_element_is_not_present(
            UI_TEST_TIMEOUT, by_id("datasender_table_processing"))

        self.assertEqual(
            "clinic test project1, clinic2 test project",
            self.all_datasenders_page.get_project_names(
                self.datasender_id_without_web_access))
        self.all_datasenders_page.dissociate_datasender_from_project(
            self.datasender_id_without_web_access, "clinic test project1")
        self.driver.wait_until_element_is_not_present(
            UI_TEST_TIMEOUT, by_id("datasender_table_processing"))
        self.assertEqual(
            "clinic2 test project",
            self.all_datasenders_page.get_project_names(
                self.datasender_id_without_web_access))
        self.all_datasenders_page.dissociate_datasender_from_project(
            self.datasender_id_without_web_access, "clinic2 test project")
        self.driver.wait_until_element_is_not_present(
            UI_TEST_TIMEOUT, by_id("datasender_table_processing"))
        self.assertEqual(
            "",
            self.all_datasenders_page.get_project_names(
                self.datasender_id_without_web_access))
コード例 #4
0
 def get_project_list(self):
     create_by_template_option = self.driver.find(
         by_id("copy_existing_questionnaire"))
     create_by_template_option.click()
     self.driver.wait_for_element(UI_TEST_TIMEOUT,
                                  by_id("existing_questionnaires"), True)
     projects = self.driver.find_elements_(
         by_css(".questionnaire_data div.highlight_on_hover"))
     return [project.text for project in projects]
コード例 #5
0
 def _verify_date_filters(self, submission_log_page):
     self.assertEqual(submission_log_page.get_date_filter_count(), 5)  # 4 date filters + 1 submission date filter
     submission_log_page.show_all_filters()
     submission_log_page.filter_by_date_question(LAST_MONTH, by_id('date-question-filter-date_time_widgets----my_date_year')) \
         .wait_for_table_data_to_load()
     self.assertEqual(submission_log_page.get_total_number_of_records(), 0)
     submission_log_page.filter_by_date_question(ALL_PERIODS, by_id('date-question-filter-date_time_widgets----my_date_year')) \
         .wait_for_table_data_to_load()
     self.assertEqual(submission_log_page.get_total_number_of_records(), 2)
コード例 #6
0
 def test_add_invalid_subjectType(self):
     self.driver.go_to(url("/entity/subjects/"))
     self.add_subject_type(SUBJECT_TYPE_WHITE_SPACES)
     self.validate_error_messages(ERROR_MSG_INVALID_ENTRY)
     self.driver.find(by_id("cancel_add_type")).click()
     self.add_subject_type(SUBJECT_TYPE_SPL_CHARS)
     self.validate_error_messages(ERROR_MSG_INVALID_ENTRY)
     self.driver.find(by_id("cancel_add_type")).click()
     self.add_subject_type(SUBJECT_TYPE_BLANK)
     self.validate_error_messages(ERROR_MSG_EMPTY_ENTRY)
コード例 #7
0
 def get_questions_list_for_selected_project(self, project_name):
     create_by_template_option = self.driver.find(
         by_id("copy_existing_questionnaire"))
     create_by_template_option.click()
     self.driver.wait_for_element(UI_TEST_TIMEOUT,
                                  by_id("existing_questionnaires"), True)
     self.driver.find(
         by_xpath(
             ".//*[@id='existing_questionnaires']/div/div[text()='%s']" %
             project_name)).click()
     self.driver.wait_for_element(UI_TEST_TIMEOUT,
                                  by_id("existing_questions"), True)
     questions_list = self.driver.find_elements_(
         by_css('#existing_questions li'))
     return [question.text for question in questions_list]
コード例 #8
0
    def configure_list_of_choices_type_question(self, question_data):
        """
        Function to select list of choices option and add the choices on the questionnaire page

        Args:
        question_data is to add the choices on the page

        return self
        """
        self.driver.find_drop_down(ANSWER_TYPE_DROPDOWN).set_selected(
            LIST_OF_CHOICES_OPTION)
        self.driver.find_element_by_id("choice_text0").clear()
        index = 1
        choices = fetch_(CHOICE, from_(question_data))
        for choice in choices:
            if index > 1:
                self.driver.find(ADD_CHOICE_LINK).click()
                box = self.driver.find_text_box(
                    by_id("choice_text%d" % (index - 1)))
                box.send_keys(choice)
            index += 1
        box = self.driver.find_text_box(
            by_xpath(CHOICE_XPATH_LOCATOR + "[1]" + CHOICE_TB_XPATH_LOCATOR))
        box.send_keys(choices[0])
        choice_type = fetch_(ALLOWED_CHOICE, from_(question_data))
        if ONLY_ONE_ANSWER == choice_type:
            self.driver.find_radio_button(ONLY_ONE_ANSWER_RB).click()
        elif MULTIPLE_ANSWERS == choice_type:
            self.driver.find_radio_button(MULTIPLE_ANSWER_RB).click()
        return self
コード例 #9
0
 def is_visible(self):
     try:
         id = by_id("cancel_questionnaire_warning_message_dialog_section")
         self.driver.wait_for_element(UI_TEST_TIMEOUT, id, True)
         return self.driver.find(id).is_displayed()
     except CouldNotLocateElementException:
         return False
コード例 #10
0
 def is_hidden(self):
     try:
         id = by_id("cancel_questionnaire_warning_message_dialog_section")
         self.driver.wait_until_element_is_not_present(UI_TEST_TIMEOUT, id)
         return self.driver.find(id).is_displayed() == False
     except CouldNotLocateElementException:
         return True
コード例 #11
0
    def has_DS_received_sms(self, recipent, row, column, debug=False):
        try:
            sms_table_element = self.driver.find(by_id("poll_sms_table"))
        except Exception as e:
            sms_table_element = None

        if not sms_table_element or not sms_table_element.is_displayed():
            self.select_element(POLL_TAB)
            time.sleep(3)
            self.select_element(POLL_SMS_ACCORDIAN)
            self.driver.wait_for_element(UI_TEST_TIMEOUT,
                                         by_css("#poll_sms_table"), True)
            self.driver.wait_until_modal_dismissed()

        try:
            elements = self.driver.find_elements_by_css_selector(
                '#poll_sms_table>tbody>tr:nth-of-type(%s)>td:nth-of-type(%s)>span.small_grey'
                % (row, column))
            recipient_name = [element.text for element in elements]

            for rep_id in recipent:
                if rep_id not in recipient_name:
                    if debug:
                        self.driver.create_screenshot(
                            "debug-ft-ds-didn-receive-poll-sms")
                        raise Exception("%s not in [%s]" %
                                        (rep_id, ", ".join(recipient_name)))
                    return False
            return True

        except Exception as e:
            self.driver.create_screenshot(
                "debug-ft-has-ds-received-sms-element-not-found")
            raise e
コード例 #12
0
 def add_option_to_a_multiple_choice_question(self, new_choice_text):
     self.driver.find(by_id("add_choice")).click()
     question = self.get_list_of_choices_type_question()
     index = len(question[CHOICE])
     self.driver.find_text_box(
         by_xpath(CHOICE_XPATH_LOCATOR + "[" + str(index) + "]" +
                  CHOICE_TB_XPATH_LOCATOR)).enter_text(new_choice_text)
コード例 #13
0
 def verify_questions(self, create_questionnaire_page):
     questions = fetch_(QUESTIONS, from_(QUESTIONNAIRE_DATA_CLINIC_PROJECT))
     create_questionnaire_page.select_question_link(2)
     self.driver.find(by_css("#question_title")).click()
     assert self.driver.find_visible_element(by_id("periode_green_message"))
     create_questionnaire_page.select_question_link(3)
     tip_message_element = self.driver.find(by_id('periode_green_message'))
     self.assertFalse(tip_message_element.is_displayed())
     self.assertEqual(questions[0], create_questionnaire_page.get_word_type_question())
     create_questionnaire_page.select_question_link(4)
     self.assertEqual(questions[1], create_questionnaire_page.get_number_type_question())
     create_questionnaire_page.select_question_link(5)
     self.assertEqual(questions[2], create_questionnaire_page.get_date_type_question())
     create_questionnaire_page.select_question_link(6)
     self.assertEqual(questions[3], create_questionnaire_page.get_list_of_choices_type_question())
     create_questionnaire_page.select_question_link(7)
     self.assertEqual(questions[4], create_questionnaire_page.get_list_of_choices_type_question())
コード例 #14
0
 def has_DS_received_sms(self, recipent, row, column):
     self.select_element(POLL_TAB)
     self.select_element(POLL_SMS_ACCORDIAN)
     self.driver.wait_for_element(UI_TEST_TIMEOUT, by_id("poll_sms_table"),
                                  True)
     recipient_name = self.driver.find(
         by_xpath(".//*[@id='poll_sms_table']/tbody/tr[%s]/td[%s]" %
                  (row, column))).text
     return recipent in recipient_name
コード例 #15
0
    def test_should_show_warning_message_when_account_message_edited(self):
        changed_messages = [
            message + "new message" for message in default_messages
        ]

        self.change_account_messages()
        time.sleep(4)
        self.driver.find(by_css("#global_subjects_link")).click()
        self.verify_warning_dialog_present()
        self.driver.find_visible_element(by_id("cancel_dialog")).click()
        self.assertListEqual(
            changed_messages,
            self.account_sms_page.get_all_account_wide_messages())

        self.driver.find(by_css("#global_subjects_link")).click()
        self.verify_warning_dialog_present()
        self.driver.find_visible_element(by_css(".no_button")).click()

        self.driver.find(by_css("#global_languages_link")).click()
        self.driver.find(by_id("account_wide_sms_link")).click()
        self.driver.wait_for_element(UI_TEST_TIMEOUT,
                                     by_id("account_wide_sms"))
        self.account_sms_page = AccountWideSmsReplyPage(self.driver)
        self.check_default_account_messages()

        self.change_account_messages()
        self.driver.find(by_css("#global_subjects_link")).click()
        self.verify_warning_dialog_present()
        self.driver.find_visible_element(by_css(".yes_button")).click()
        self.driver.wait_until_element_is_not_present(
            UI_TEST_TIMEOUT, by_css(".ui-dialog-titlebar"))

        self.driver.wait_until_element_is_not_present(UI_TEST_TIMEOUT,
                                                      by_css(".blockPage"))
        self.driver.find(by_css("#global_languages_link")).click()
        self.driver.find(by_id("account_wide_sms_link")).click()
        self.account_sms_page = AccountWideSmsReplyPage(self.driver)
        self.account_sms_page.wait_for_reply_messages_to_load()
        self.assertListEqual(
            changed_messages,
            self.account_sms_page.get_all_account_wide_messages())

        self.reset_account_messages()
コード例 #16
0
 def submit(self, debug=False):
     self.driver.find_visible_element(by_id('validate-form')).click()
     try:
         self.driver.wait_for_element(UI_TEST_TIMEOUT * 2,
                                      by_css('.success-message-box'), True)
     except Exception as e:
         self.driver.create_screenshot(
             "debug-ft-no-success-msg-after-submit")
         raise e
     self.driver.wait_for_page_load()
     return self
コード例 #17
0
 def get_total_number_of_entries(self):
     self.driver.wait_until_element_is_not_present(
         UI_TEST_TIMEOUT, by_id("failedsubmissions_table_processing"))
     #return int(self.driver.execute_script("return $('table tbody tr').length - 1"))
     try:
         return int(
             self.driver.execute_script(
                 "return $('.dataTables_info').html().split(' ')[5]"))
     except Exception:
         return int(
             self.driver.execute_script(
                 "return $('.dataTables_info').html().split(' ')[4]"))
コード例 #18
0
ファイル: page.py プロジェクト: mariot/datawinners
    def is_help_content_available(self):
        if not self.is_help_button_present():
            return False

        import datetime
        from framework.utils.common_utils import by_id
        start_time = datetime.datetime.now()
        locator = by_id("need_help_button")
        self.driver.find(locator).click()
        iframe = self.driver.find(by_id('div_iframe'))
        end_time = start_time + datetime.timedelta(0, 120)

        while True:
            try:
                current_time = datetime.datetime.now()
                style = iframe.get_attribute('style')
                if style != '':
                    return True

                if current_time >= end_time:
                    return False

            except Exception as e:
                return False
コード例 #19
0
    def test_unsaved_warning_on_language_change(self):
        def change_language():
            self.language_page.select_language("French")

        self.change_reply_messages()
        change_language()
        self.verify_warning_dialog_present()
        self.driver.find_visible_element(by_id("cancel_dialog")).click()
        self.assertListEqual(
            [msg + "new message" for msg in default_en_messages],
            self.language_page.get_all_customized_reply_messages())

        change_language()
        self.verify_warning_dialog_present()
        self.language_page.click_revert_changes_button()

        self.assertFalse(self.is_warning_dialog_present())
        self.language_page.refresh()
        self.language_page = CustomizedLanguagePage(self.driver)
        self.assertFalse(self.is_warning_dialog_present())
        self.language_page.wait_for_reply_messages_to_load()
        self.check_for_default_en_messages()

        self.change_reply_messages()
        change_language()
        self.verify_warning_dialog_present()
        self.language_page.click_save_changes_button()
        self.driver.wait_for_element(UI_TEST_TIMEOUT,
                                     by_css(".success-message-box"), True)

        self.language_page.refresh()
        self.driver.wait_for_page_load()
        self.language_page = CustomizedLanguagePage(self.driver)
        self.language_page.wait_for_reply_messages_to_load()
        self.assertListEqual(
            [msg + "new message" for msg in default_en_messages],
            self.language_page.get_all_customized_reply_messages())
        self.reset_messages()
コード例 #20
0
    def test_unsaved_warning_dialog(self):
        def click_identification_number_page():
            self.driver.find(by_css("#global_subjects_link")).click()

        self.change_reply_messages()
        click_identification_number_page()
        self.verify_warning_dialog_present()
        self.driver.find_visible_element(by_id("cancel_dialog")).click()
        self.assertListEqual(
            [msg + "new message" for msg in default_en_messages],
            self.language_page.get_all_customized_reply_messages())

        click_identification_number_page()
        self.verify_warning_dialog_present()
        self.language_page.click_revert_changes_button()

        self.assertFalse(self.is_warning_dialog_present())
        self.driver.find(by_css("#global_languages_link")).click()
        self.language_page = CustomizedLanguagePage(self.driver)
        self.assertFalse(self.is_warning_dialog_present())
        self.language_page.wait_for_reply_messages_to_load()
        self.check_for_default_en_messages()

        self.change_reply_messages()
        click_identification_number_page()
        self.verify_warning_dialog_present()
        self.language_page.click_save_changes_button()

        self.driver.find(by_css("#global_languages_link")).click()
        self.driver.wait_for_page_load()
        self.language_page = CustomizedLanguagePage(self.driver)
        self.language_page.wait_for_reply_messages_to_load()
        self.assertListEqual(
            [msg + "new message" for msg in default_en_messages],
            self.language_page.get_all_customized_reply_messages())
        self.reset_messages()
コード例 #21
0
 def get_questionnaire_title(self):
     return self.driver.find_text_box(by_id("questionnaire_title")).text
コード例 #22
0
 def add_choice_option_to_selected_question(self, choice_text=None):
     self.driver.find(by_id("add_choice")).click()
     if choice_text:
         self.driver.find_text_box(
             by_css("#options_list input:last")).enter_text(choice_text)
コード例 #23
0
 def set_question_title(self, title):
     self.driver.find_text_box(by_id("question_title")).enter_text(title)
コード例 #24
0
 def set_poll_questionnaire_title(self, title, generate_random=False):
     poll_title = title + generateId() if generate_random else title
     self.driver.wait_for_element(UI_TEST_TIMEOUT, by_id("poll_title"),
                                  True)
     self.driver.find_text_box(by_id("poll_title")).enter_text(poll_title)
     return poll_title
コード例 #25
0
 def change_nth_option_of_choice(self, index, new_text):
     self.driver.find_text_box(by_id("choice_text%d" %
                                     (index - 1))).enter_text(new_text)
コード例 #26
0
 def delete_the_poll(self):
     self.select_element(by_css('.delete_project'))
     self.select_element(by_id('confirm_delete_poll'))
コード例 #27
0
 def get_poll_status(self):
     return self.driver.find(by_id("poll_status")).text
コード例 #28
0
 def get_nth_option_of_choice(self, index):
     return self.driver.find(by_id("choice_text%d" % (index - 1)))
コード例 #29
0
 def test_should_show_upgrade_instruction_on_register_subjects_page(self):
     project_overview_page = self.navigate_to_clinic3_overview_page()
     my_subjects = project_overview_page.navigate_to_subjects_page()
     my_subjects.navigate_to_subject_registration_form_tab()
     self.driver.wait_for_element(20, by_id("sms_form_heading"))
     self.check_upgrade_instruction(project_overview_page)
コード例 #30
0
 def get_nth_option_choice_text(self, index):
     try:
         return self.driver.find(by_id("choice_text%d" %
                                       (index - 1))).get_attribute('value')
     except NoSuchElementException:
         return ""