| ============================= test session starts ==============================
|
| platform linux -- Python 3.9.13, pytest-7.1.2, pluggy-1.0.0 -- /usr/bin/python3
|
| cachedir: .pytest_cache
|
| rootdir: /var/lib/jenkins/workspace/pps
|
| plugins: xdist-3.0.2, rerunfailures-10.2, allure-pytest-2.8.34
|
| collecting ... collected 88 items
|
|
|
| tests/ui_tests/pps_cps/pps/Other cases/test_add_prospects_to_list.py::TestPPS::test_add_all_prospects_to_list[chrome] RERUN
|
| tests/ui_tests/pps_cps/pps/Other cases/test_add_prospects_to_list.py::TestPPS::test_add_all_prospects_to_list[chrome] RERUN
|
| tests/ui_tests/pps_cps/pps/Other cases/test_add_prospects_to_list.py::TestPPS::test_add_all_prospects_to_list[chrome] FAILED
|
| tests/ui_tests/pps_cps/pps/Other cases/test_add_prospects_to_list.py::TestPPS::test_create_prospects_list_error[chrome-0-List with the same name already exists.] RERUN
|
| tests/ui_tests/pps_cps/pps/Other cases/test_add_prospects_to_list.py::TestPPS::test_create_prospects_list_error[chrome-0-List with the same name already exists.] RERUN
|
| tests/ui_tests/pps_cps/pps/Other cases/test_add_prospects_to_list.py::TestPPS::test_create_prospects_list_error[chrome-0-List with the same name already exists.] FAILED
|
| tests/ui_tests/pps_cps/pps/Other cases/test_add_prospects_to_list.py::TestPPS::test_create_prospects_list_error[chrome--Please, put new list name] RERUN
|
| tests/ui_tests/pps_cps/pps/Other cases/test_add_prospects_to_list.py::TestPPS::test_create_prospects_list_error[chrome--Please, put new list name] RERUN
|
| tests/ui_tests/pps_cps/pps/Other cases/test_add_prospects_to_list.py::TestPPS::test_create_prospects_list_error[chrome--Please, put new list name] FAILED
|
| tests/ui_tests/pps_cps/pps/Other cases/test_clear_filters.py::TestPPS::test_clear_filters[chrome-First name-Enter name] PASSED
|
| tests/ui_tests/pps_cps/pps/Other cases/test_clear_filters.py::TestPPS::test_clear_filters[chrome-Location-Select prospect's location] PASSED
|
| tests/ui_tests/pps_cps/pps/Other cases/test_clear_filters.py::TestPPS::test_clear_filters[chrome-Job title-Enter one or more job titles] PASSED
|
| tests/ui_tests/pps_cps/pps/Other cases/test_clear_filters.py::TestPPS::test_clear_filters[chrome-Last name-Enter name] PASSED
|
| tests/ui_tests/pps_cps/pps/Other cases/test_clear_filters.py::TestPPS::test_clear_filters[chrome-Skills-Enter prospect's expertise] PASSED
|
| tests/ui_tests/pps_cps/pps/Other cases/test_clear_filters.py::TestPPS::test_clear_filters[chrome-Company name-Enter company name] PASSED
|
| tests/ui_tests/pps_cps/pps/Other cases/test_clear_filters.py::TestPPS::test_clear_filters[chrome-Company location-Select company location] PASSED
|
| tests/ui_tests/pps_cps/pps/Other cases/test_clear_filters.py::TestPPS::test_clear_filters[chrome-Industry-Select industry] PASSED
|
| tests/ui_tests/pps_cps/pps/Other cases/test_clear_filters.py::TestPPS::test_clear_filters[chrome-Size-Choose number of employees] PASSED
|
| tests/ui_tests/pps_cps/pps/Other cases/test_clear_filters.py::TestPPS::test_clear_filters[chrome-Founded-Select founding date] PASSED
|
| tests/ui_tests/pps_cps/pps/Other cases/test_clear_filters.py::TestPPS::test_clear_filters[chrome-Revenue-Select company's revenue range] PASSED
|
| tests/ui_tests/pps_cps/pps/Other cases/test_clear_filters.py::TestPPS::test_clear_filters[chrome-Specialties-Select company's specialties] PASSED
|
| tests/ui_tests/pps_cps/pps/Other cases/test_pagination.py::TestPPS::test_pagination[chrome] PASSED
|
| tests/ui_tests/pps_cps/pps/Other cases/test_remove_filters.py::TestPPS::test_remove_filter[chrome-Location-ukr-Ukraine-Select prospect's location] PASSED
|
| tests/ui_tests/pps_cps/pps/Other cases/test_remove_filters.py::TestPPS::test_remove_filter[chrome-Job title-man-Project Manager-Enter one or more job titles] PASSED
|
| tests/ui_tests/pps_cps/pps/Other cases/test_remove_filters.py::TestPPS::test_remove_filter[chrome-Skills-man-management-Enter prospect's expertise] PASSED
|
| tests/ui_tests/pps_cps/pps/Other cases/test_remove_filters.py::TestPPS::test_remove_filter[chrome-Company name-Snov.io-Snov.io-Enter company name] PASSED
|
| tests/ui_tests/pps_cps/pps/Other cases/test_remove_filters.py::TestPPS::test_remove_filter[chrome-Company location-ukr-Ukraine-Select company location] PASSED
|
| tests/ui_tests/pps_cps/pps/Other cases/test_remove_filters.py::TestPPS::test_remove_filter[chrome-Industry-ani-Animation-Select industry] PASSED
|
| tests/ui_tests/pps_cps/pps/Other cases/test_remove_filters.py::TestPPS::test_remove_filter[chrome-Specialties-DevOps-DevOps-Select company's specialties] RERUN
|
| tests/ui_tests/pps_cps/pps/Other cases/test_remove_filters.py::TestPPS::test_remove_filter[chrome-Specialties-DevOps-DevOps-Select company's specialties] RERUN
|
| tests/ui_tests/pps_cps/pps/Other cases/test_remove_filters.py::TestPPS::test_remove_filter[chrome-Specialties-DevOps-DevOps-Select company's specialties] FAILED
|
| tests/ui_tests/pps_cps/pps/Other cases/test_remove_filters.py::TestPPS::test_remove_filter_prospect_name[chrome-First name-Anna-Enter name] PASSED
|
| tests/ui_tests/pps_cps/pps/Other cases/test_remove_filters.py::TestPPS::test_remove_filter_prospect_name[chrome-Last name-Smith-Enter name] PASSED
|
| tests/ui_tests/pps_cps/pps/Other cases/test_reset_all_filters.py::TestPPS::test_reset_all_filters[chrome] PASSED
|
| tests/ui_tests/pps_cps/pps/Other cases/test_show_all.py::TestPPS::test_save_recent_search[chrome] RERUN
|
| tests/ui_tests/pps_cps/pps/Other cases/test_show_all.py::TestPPS::test_save_recent_search[chrome] RERUN
|
| tests/ui_tests/pps_cps/pps/Other cases/test_show_all.py::TestPPS::test_save_recent_search[chrome] FAILED
|
| tests/ui_tests/pps_cps/pps/Plans/test_add_to_list_not_enough_credits.py::TestPPS::test_add_prospects_to_list_not_enough_credits[chrome] RERUN
|
| tests/ui_tests/pps_cps/pps/Plans/test_add_to_list_not_enough_credits.py::TestPPS::test_add_prospects_to_list_not_enough_credits[chrome] RERUN
|
| tests/ui_tests/pps_cps/pps/Plans/test_add_to_list_not_enough_credits.py::TestPPS::test_add_prospects_to_list_not_enough_credits[chrome] FAILED
|
| tests/ui_tests/pps_cps/pps/Plans/test_check_credits.py::TestPPS::test_credits_after_adding[chrome-United States] RERUN
|
| tests/ui_tests/pps_cps/pps/Plans/test_check_credits.py::TestPPS::test_credits_after_adding[chrome-United States] PASSED
|
| tests/ui_tests/pps_cps/pps/Plans/test_dbs_search_no_credits.py::TestPPS::test_dbs_search_no_credits[chrome-rk-10-10-2023-1@snov.io] PASSED
|
| tests/ui_tests/pps_cps/pps/Plans/test_dbs_search_no_credits.py::TestPPS::test_dbs_search_no_credits[chrome-rk-10-10-2023-4@snov.io] PASSED
|
| tests/ui_tests/pps_cps/pps/Plans/test_free_plan_limit.py::TestPPS::test_dbs_search_no_credits[chrome] PASSED
|
| tests/ui_tests/pps_cps/pps/Search/test_first_search.py::TestPPS::test_interactive_tooltip[chrome] PASSED
|
| tests/ui_tests/pps_cps/pps/Search/test_first_search.py::TestPPS::test_first_default_filters[chrome] PASSED
|
| tests/ui_tests/pps_cps/pps/Search/test_load_search.py::TestPPS::test_load_saved_search_from_filters_panel[chrome-Job title-list_of_positions0] RERUN
|
| tests/ui_tests/pps_cps/pps/Search/test_load_search.py::TestPPS::test_load_saved_search_from_filters_panel[chrome-Job title-list_of_positions0] RERUN
|
| tests/ui_tests/pps_cps/pps/Search/test_load_search.py::TestPPS::test_load_saved_search_from_filters_panel[chrome-Job title-list_of_positions0] FAILED
|
| tests/ui_tests/pps_cps/pps/Search/test_load_search.py::TestPPS::test_load_saved_search_from_details[chrome-Job title-list_of_positions0] RERUN
|
| tests/ui_tests/pps_cps/pps/Search/test_load_search.py::TestPPS::test_load_saved_search_from_details[chrome-Job title-list_of_positions0] RERUN
|
| tests/ui_tests/pps_cps/pps/Search/test_load_search.py::TestPPS::test_load_saved_search_from_details[chrome-Job title-list_of_positions0] FAILED
|
| tests/ui_tests/pps_cps/pps/Search/test_mix_search.py::TestPPS::test_search_by_company_location_and_job[chrome-General Manager-United States] PASSED
|
| tests/ui_tests/pps_cps/pps/Search/test_mix_search.py::TestPPS::test_search_by_company_location_and_job[chrome-CEO-Ukraine] PASSED
|
| tests/ui_tests/pps_cps/pps/Search/test_mix_search.py::TestPPS::test_search_by_company_and_job[chrome-Apple-Cheng] PASSED
|
| tests/ui_tests/pps_cps/pps/Search/test_open_in_new_tab.py::TestPPS::test_open_saved_search_in_new_tab[chrome] PASSED
|
| tests/ui_tests/pps_cps/pps/Search/test_open_in_new_tab.py::TestPPS::test_open_saved_search_in_new_tab_open_details[chrome-0] PASSED
|
| tests/ui_tests/pps_cps/pps/Search/test_open_in_new_tab.py::TestPPS::test_open_saved_search_in_new_tab_open_details[chrome-1] PASSED
|
| tests/ui_tests/pps_cps/pps/Search/test_remove_search.py::TestPPS::test_delete_search[chrome] RERUN
|
| tests/ui_tests/pps_cps/pps/Search/test_remove_search.py::TestPPS::test_delete_search[chrome] RERUN
|
| tests/ui_tests/pps_cps/pps/Search/test_remove_search.py::TestPPS::test_delete_search[chrome] FAILED
|
| tests/ui_tests/pps_cps/pps/Search/test_remove_search.py::TestPPS::test_delete_search_on_details[chrome] RERUN
|
| tests/ui_tests/pps_cps/pps/Search/test_remove_search.py::TestPPS::test_delete_search_on_details[chrome] RERUN
|
| tests/ui_tests/pps_cps/pps/Search/test_remove_search.py::TestPPS::test_delete_search_on_details[chrome] FAILED
|
| tests/ui_tests/pps_cps/pps/Search/test_rename_search.py::TestPPS::test_rename_saved_search_from_menu[chrome] RERUN
|
| tests/ui_tests/pps_cps/pps/Search/test_rename_search.py::TestPPS::test_rename_saved_search_from_menu[chrome] RERUN
|
| tests/ui_tests/pps_cps/pps/Search/test_rename_search.py::TestPPS::test_rename_saved_search_from_menu[chrome] FAILED
|
| tests/ui_tests/pps_cps/pps/Search/test_rename_search.py::TestPPS::test_rename_saved_search_from_details[chrome] RERUN
|
| tests/ui_tests/pps_cps/pps/Search/test_rename_search.py::TestPPS::test_rename_saved_search_from_details[chrome] RERUN
|
| tests/ui_tests/pps_cps/pps/Search/test_rename_search.py::TestPPS::test_rename_saved_search_from_details[chrome] FAILED
|
| tests/ui_tests/pps_cps/pps/Search/test_save_search.py::TestPPS::test_save_recent_search[chrome] RERUN
|
| tests/ui_tests/pps_cps/pps/Search/test_save_search.py::TestPPS::test_save_recent_search[chrome] RERUN
|
| tests/ui_tests/pps_cps/pps/Search/test_save_search.py::TestPPS::test_save_recent_search[chrome] FAILED
|
| tests/ui_tests/pps_cps/pps/Search/test_save_search.py::TestPPS::test_save_search_filter_panel[chrome] RERUN
|
| tests/ui_tests/pps_cps/pps/Search/test_save_search.py::TestPPS::test_save_search_filter_panel[chrome] RERUN
|
| tests/ui_tests/pps_cps/pps/Search/test_save_search.py::TestPPS::test_save_search_filter_panel[chrome] FAILED
|
| tests/ui_tests/pps_cps/pps/Search/test_save_search.py::TestPPS::test_save_search_open_details[chrome] RERUN
|
| tests/ui_tests/pps_cps/pps/Search/test_save_search.py::TestPPS::test_save_search_open_details[chrome] RERUN
|
| tests/ui_tests/pps_cps/pps/Search/test_save_search.py::TestPPS::test_save_search_open_details[chrome] FAILED
|
| tests/ui_tests/pps_cps/pps/Search/test_save_search.py::TestPPS::test_save_search_with_already_exist_name[chrome] RERUN
|
| tests/ui_tests/pps_cps/pps/Search/test_save_search.py::TestPPS::test_save_search_with_already_exist_name[chrome] RERUN
|
| tests/ui_tests/pps_cps/pps/Search/test_save_search.py::TestPPS::test_save_search_with_already_exist_name[chrome] FAILED
|
| tests/ui_tests/pps_cps/pps/Search/test_save_search.py::TestPPS::test_save_search_enter_spaces_and_cancel[chrome] RERUN
|
| tests/ui_tests/pps_cps/pps/Search/test_save_search.py::TestPPS::test_save_search_enter_spaces_and_cancel[chrome] RERUN
|
| tests/ui_tests/pps_cps/pps/Search/test_save_search.py::TestPPS::test_save_search_enter_spaces_and_cancel[chrome] FAILED
|
| tests/ui_tests/pps_cps/pps/Search/test_save_search.py::TestPPS::test_save_more_10_searches[chrome] RERUN
|
| tests/ui_tests/pps_cps/pps/Search/test_save_search.py::TestPPS::test_save_more_10_searches[chrome] RERUN
|
| tests/ui_tests/pps_cps/pps/Search/test_save_search.py::TestPPS::test_save_more_10_searches[chrome] FAILED
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_company_founded.py::TestPPS::test_search_by_founded[chrome] PASSED
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_company_industry.py::TestPPS::test_search_by_industry[chrome-Apparel & Fashion-Apparel & Fashion] PASSED
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_company_industry.py::TestPPS::test_search_by_industry[chrome-ban-Banking] PASSED
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_company_location.py::TestPPS::test_search_by_company_location[chrome-New York-New York, United States] PASSED
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_company_location.py::TestPPS::test_search_by_company_location[chrome-California-California, United States] PASSED
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_company_location.py::TestPPS::test_search_by_company_location[chrome-Ukraine-Ukraine] PASSED
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_company_name.py::TestPPS::test_search_by_company_name[chrome-Microsoft] PASSED
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_company_name.py::TestPPS::test_search_by_company_name[chrome-Apple] PASSED
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_company_revenue.py::TestPPS::test_search_by_company_revenue[chrome] PASSED
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_company_size.py::TestPPS::test_search_by_company_size[chrome] PASSED
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_company_specialties.py::TestPPS::test_search_by_specialties[chrome-DevOps-1] PASSED
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_company_specialties.py::TestPPS::test_search_by_specialties[chrome-man-2] PASSED
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_prospect_job.py::TestPPS::test_search_by_prospect_job[chrome-Job title-man-General Manager] PASSED
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_prospect_job.py::TestPPS::test_search_by_prospect_job[chrome-Job title-Python Developer-Python Developer] PASSED
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_prospect_job.py::TestPPS::test_search_by_prospect_job[chrome-Job title-HR -HR Manager] PASSED
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_prospect_job.py::TestPPS::test_search_by_prospect_job_exclude[chrome-Job title-manager-General Manager] RERUN
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_prospect_job.py::TestPPS::test_search_by_prospect_job_exclude[chrome-Job title-manager-General Manager] PASSED
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_prospect_job.py::TestPPS::test_search_by_prospect_job_exclude[chrome-Job title-developer-.NET Developer] RERUN
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_prospect_job.py::TestPPS::test_search_by_prospect_job_exclude[chrome-Job title-developer-.NET Developer] PASSED
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_prospect_job.py::TestPPS::test_search_by_prospect_job_exclude[chrome-Job title-qa-QA Engineer] PASSED
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_prospect_location.py::TestPPS::test_prospect_location[chrome-New York-New York, United States] PASSED
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_prospect_location.py::TestPPS::test_prospect_location[chrome-California-California, United States] PASSED
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_prospect_name.py::TestPPS::test_search_by_prospect_name[chrome-Last name-Jackson] PASSED
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_prospect_name.py::TestPPS::test_search_by_prospect_name[chrome-First name-Anna] PASSED
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_skills.py::TestPPS::test_search_by_skills[chrome-man-management] PASSED
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_skills.py::TestPPS::test_search_by_skills[chrome-bus-business development] PASSED
|
| tests/ui_tests/pps_cps/pps/Validation/test_enter_less_2_characters.py::TestPPS::test_less_3_char[chrome-Job title-Please enter 2 or more characters] PASSED
|
| tests/ui_tests/pps_cps/pps/Validation/test_enter_less_2_characters.py::TestPPS::test_less_3_char[chrome-Skills-Please enter 3 or more characters] PASSED
|
| tests/ui_tests/pps_cps/pps/Validation/test_enter_less_2_characters.py::TestPPS::test_less_3_char[chrome-Company name-Please enter 3 or more characters] PASSED
|
| tests/ui_tests/pps_cps/pps/Validation/test_enter_less_2_characters.py::TestPPS::test_less_3_char[chrome-Specialties-Please enter 3 or more characters] PASSED
|
| tests/ui_tests/pps_cps/pps/Validation/test_enter_less_2_characters.py::TestPPS::test_english_text_dropdown[chrome-Location-Please enter 3 or more characters] PASSED
|
| tests/ui_tests/pps_cps/pps/Validation/test_enter_less_2_characters.py::TestPPS::test_english_text_dropdown[chrome-Company location-Please enter 3 or more characters] PASSED
|
| tests/ui_tests/pps_cps/pps/Validation/test_limit_10_filters.py::TestPPS::test_limit_10_filter[chrome-Location] PASSED
|
| tests/ui_tests/pps_cps/pps/Validation/test_limit_10_filters.py::TestPPS::test_limit_10_filter[chrome-Job title] PASSED
|
| tests/ui_tests/pps_cps/pps/Validation/test_limit_10_filters.py::TestPPS::test_limit_10_filter[chrome-Company name] PASSED
|
| tests/ui_tests/pps_cps/pps/Validation/test_limit_10_filters.py::TestPPS::test_limit_10_filter[chrome-Company location] PASSED
|
| tests/ui_tests/pps_cps/pps/Validation/test_limit_10_filters.py::TestPPS::test_limit_10_filter[chrome-Specialties] PASSED
|
| tests/ui_tests/pps_cps/pps/Validation/test_not_found_data.py::TestPPS::test_no_data_found[chrome] PASSED
|
|
|
| =================================== FAILURES ===================================
|
| ________________ TestPPS.test_add_all_prospects_to_list[chrome] ________________
|
|
|
| self = <test_add_prospects_to_list.TestPPS object at 0x7f00defb6d60>
|
|
|
| @allure.title("Add all prospect per page")
|
| @allure.severity(Severity.BLOCKER)
|
| def test_add_all_prospects_to_list(self):
|
| self.prospects_page = ProspectsPage(self.driver)
|
| self.pps_page.search_by_def_data(TestDataPPS.USER_PPS, TestDataGeneral.PASSWORD_GENERAL)
|
| prospect_names_pps = self.pps_page.get_prospect_names().sort()
|
| > created_list_name = self.pps_page.add_selected_prospects_to_new_list()
|
|
|
| tests/ui_tests/pps_cps/pps/Other cases/test_add_prospects_to_list.py:17:
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
| tests/scr/pages/pps_page.py:328: in add_selected_prospects_to_new_list
|
| self.click_general_checkbox()
|
| tests/scr/pages/pps_page.py:290: in click_general_checkbox
|
| self.do_click(self.GENERAL_CHECKBOX)
|
| tests/scr/pages/base_page.py:15: in do_click
|
| WebDriverWait(self.driver, 20).until(EC.visibility_of_element_located(by_locator)).click()
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
| self = <selenium.webdriver.support.wait.WebDriverWait (session="f2eeb71201e94ea30c1f8d8b90e93501")>
|
| method = <selenium.webdriver.support.expected_conditions.visibility_of_element_located object at 0x7f00def15460>
|
| message = ''
|
|
|
| def until(self, method, message=''):
|
| """Calls the method provided with the driver as an argument until the \
|
| return value is not False."""
|
| screen = None
|
| stacktrace = None
|
|
|
| end_time = time.time() + self._timeout
|
| while True:
|
| try:
|
| value = method(self._driver)
|
| if value:
|
| return value
|
| except self._ignored_exceptions as exc:
|
| screen = getattr(exc, 'screen', None)
|
| stacktrace = getattr(exc, 'stacktrace', None)
|
| time.sleep(self._poll)
|
| if time.time() > end_time:
|
| break
|
| > raise TimeoutException(message, screen, stacktrace)
|
| E selenium.common.exceptions.TimeoutException: Message:
|
|
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/support/wait.py:80: TimeoutException
|
| _ TestPPS.test_create_prospects_list_error[chrome-0-List with the same name already exists.] _
|
|
|
| self = <test_add_prospects_to_list.TestPPS object at 0x7f00defb6ee0>
|
| list_name = 0, error = 'List with the same name already exists.'
|
|
|
| @allure.title("Create prospects list error")
|
| @allure.severity(Severity.BLOCKER)
|
| @pytest.mark.parametrize('list_name, error', [
|
| (
|
| TestDataPPS.DEF_INDEX,
|
| TestDataGeneral.CREATE_ALREADY_EXIST_PROSPECT_LIST_ERROR,
|
|
|
| ),
|
| (
|
| '',
|
| TestDataGeneral.CREATE_LIST_WITHOUT_NAME_ERROR
|
| ),
|
| ])
|
| def test_create_prospects_list_error(self, list_name, error):
|
| > self.pps_page.search_by_def_data(TestDataPPS.USER_PPS_STATIC, TestDataGeneral.PASSWORD_GENERAL_NEW)
|
|
|
| tests/ui_tests/pps_cps/pps/Other cases/test_add_prospects_to_list.py:37:
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
| tests/scr/pages/pps_page.py:592: in search_by_def_data
|
| self.login_and_open_pps_page(login, password)
|
| tests/scr/pages/pps_page.py:100: in login_and_open_pps_page
|
| self.open_pps_page()
|
| tests/scr/pages/pps_page.py:104: in open_pps_page
|
| self.wait_element(self.CHECK_SEARCH_RESULTS)
|
| tests/scr/pages/base_page.py:58: in wait_element
|
| element = wait.until(EC.presence_of_element_located(by_locator))
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
| self = <selenium.webdriver.support.wait.WebDriverWait (session="16972a1adcca5c1a37e16d36e0ec6748")>
|
| method = <selenium.webdriver.support.expected_conditions.presence_of_element_located object at 0x7f00de833f10>
|
| message = ''
|
|
|
| def until(self, method, message=''):
|
| """Calls the method provided with the driver as an argument until the \
|
| return value is not False."""
|
| screen = None
|
| stacktrace = None
|
|
|
| end_time = time.time() + self._timeout
|
| while True:
|
| try:
|
| value = method(self._driver)
|
| if value:
|
| return value
|
| except self._ignored_exceptions as exc:
|
| screen = getattr(exc, 'screen', None)
|
| stacktrace = getattr(exc, 'stacktrace', None)
|
| time.sleep(self._poll)
|
| if time.time() > end_time:
|
| break
|
| > raise TimeoutException(message, screen, stacktrace)
|
| E selenium.common.exceptions.TimeoutException: Message:
|
|
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/support/wait.py:80: TimeoutException
|
| _ TestPPS.test_create_prospects_list_error[chrome--Please, put new list name] __
|
|
|
| self = <test_add_prospects_to_list.TestPPS object at 0x7f00defb6f40>
|
| list_name = '', error = 'Please, put new list name'
|
|
|
| @allure.title("Create prospects list error")
|
| @allure.severity(Severity.BLOCKER)
|
| @pytest.mark.parametrize('list_name, error', [
|
| (
|
| TestDataPPS.DEF_INDEX,
|
| TestDataGeneral.CREATE_ALREADY_EXIST_PROSPECT_LIST_ERROR,
|
|
|
| ),
|
| (
|
| '',
|
| TestDataGeneral.CREATE_LIST_WITHOUT_NAME_ERROR
|
| ),
|
| ])
|
| def test_create_prospects_list_error(self, list_name, error):
|
| > self.pps_page.search_by_def_data(TestDataPPS.USER_PPS_STATIC, TestDataGeneral.PASSWORD_GENERAL_NEW)
|
|
|
| tests/ui_tests/pps_cps/pps/Other cases/test_add_prospects_to_list.py:37:
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
| tests/scr/pages/pps_page.py:592: in search_by_def_data
|
| self.login_and_open_pps_page(login, password)
|
| tests/scr/pages/pps_page.py:100: in login_and_open_pps_page
|
| self.open_pps_page()
|
| tests/scr/pages/pps_page.py:104: in open_pps_page
|
| self.wait_element(self.CHECK_SEARCH_RESULTS)
|
| tests/scr/pages/base_page.py:58: in wait_element
|
| element = wait.until(EC.presence_of_element_located(by_locator))
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
| self = <selenium.webdriver.support.wait.WebDriverWait (session="63519d987351e7bd85e676e45a881b56")>
|
| method = <selenium.webdriver.support.expected_conditions.presence_of_element_located object at 0x7f00de835460>
|
| message = ''
|
|
|
| def until(self, method, message=''):
|
| """Calls the method provided with the driver as an argument until the \
|
| return value is not False."""
|
| screen = None
|
| stacktrace = None
|
|
|
| end_time = time.time() + self._timeout
|
| while True:
|
| try:
|
| value = method(self._driver)
|
| if value:
|
| return value
|
| except self._ignored_exceptions as exc:
|
| screen = getattr(exc, 'screen', None)
|
| stacktrace = getattr(exc, 'stacktrace', None)
|
| time.sleep(self._poll)
|
| if time.time() > end_time:
|
| break
|
| > raise TimeoutException(message, screen, stacktrace)
|
| E selenium.common.exceptions.TimeoutException: Message:
|
|
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/support/wait.py:80: TimeoutException
|
| _ TestPPS.test_remove_filter[chrome-Specialties-DevOps-DevOps-Select company's specialties] _
|
|
|
| self = <test_remove_filters.TestPPS object at 0x7f00defe0e50>
|
| filter_name = 'Specialties', data_to_fill = 'DevOps', approved_data = 'DevOps'
|
| place_holder = "Select company's specialties"
|
|
|
| @pytest.mark.parametrize('filter_name, data_to_fill, approved_data, place_holder', [
|
| (
|
| TestDataPPS.P_LOCATION,
|
| 'ukr',
|
| 'Ukraine',
|
| TestDataPPS.filter_placeholders[TestDataPPS.P_LOCATION]
|
| ),
|
| (
|
| TestDataPPS.P_JOB_TITLE,
|
| TestDataPPS.DEF_DATA_TO_FILL,
|
| 'Project Manager',
|
| TestDataPPS.filter_placeholders[TestDataPPS.P_JOB_TITLE]
|
| ),
|
| (
|
| TestDataPPS.P_SKILLS,
|
| TestDataPPS.DEF_DATA_TO_FILL,
|
| 'management',
|
| TestDataPPS.filter_placeholders[TestDataPPS.P_SKILLS]
|
| ),
|
| (
|
| TestDataPPS.C_COMPANY_NAME,
|
| 'Snov.io',
|
| 'Snov.io',
|
| TestDataPPS.filter_placeholders[TestDataPPS.C_COMPANY_NAME]
|
| ),
|
| (
|
| TestDataPPS.C_COMPANY_LOCATION,
|
| 'ukr',
|
| 'Ukraine',
|
| TestDataPPS.filter_placeholders[TestDataPPS.C_COMPANY_LOCATION]
|
| ),
|
| (
|
| TestDataPPS.C_INDUSTRY,
|
| 'ani',
|
| 'Animation',
|
| TestDataPPS.filter_placeholders[TestDataPPS.C_INDUSTRY]
|
| ),
|
| (
|
| TestDataPPS.C_SPECIALTIES,
|
| 'DevOps',
|
| 'DevOps',
|
| TestDataPPS.filter_placeholders[TestDataPPS.C_SPECIALTIES]
|
| )
|
| ])
|
| @allure.title("remove elastic filter")
|
| @allure.severity(Severity.BLOCKER)
|
| def test_remove_filter(self, filter_name, data_to_fill, approved_data, place_holder):
|
| self.pps_page.login_and_open_pps_page(TestDataPPS.USER_PPS, TestDataGeneral.PASSWORD_GENERAL)
|
| > self.pps_page.choose_elastic_filter(filter_name, data_to_fill, approved_data)
|
|
|
| tests/ui_tests/pps_cps/pps/Other cases/test_remove_filters.py:58:
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
| tests/scr/pages/pps_page.py:135: in choose_elastic_filter
|
| self.do_click(option_selector_by_name)
|
| tests/scr/pages/base_page.py:15: in do_click
|
| WebDriverWait(self.driver, 20).until(EC.visibility_of_element_located(by_locator)).click()
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
| self = <selenium.webdriver.support.wait.WebDriverWait (session="8ccb94e0feb3b791262de3a9492890b3")>
|
| method = <selenium.webdriver.support.expected_conditions.visibility_of_element_located object at 0x7f00de7a5340>
|
| message = ''
|
|
|
| def until(self, method, message=''):
|
| """Calls the method provided with the driver as an argument until the \
|
| return value is not False."""
|
| screen = None
|
| stacktrace = None
|
|
|
| end_time = time.time() + self._timeout
|
| while True:
|
| try:
|
| value = method(self._driver)
|
| if value:
|
| return value
|
| except self._ignored_exceptions as exc:
|
| screen = getattr(exc, 'screen', None)
|
| stacktrace = getattr(exc, 'stacktrace', None)
|
| time.sleep(self._poll)
|
| if time.time() > end_time:
|
| break
|
| > raise TimeoutException(message, screen, stacktrace)
|
| E selenium.common.exceptions.TimeoutException: Message:
|
|
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/support/wait.py:80: TimeoutException
|
| ___________________ TestPPS.test_save_recent_search[chrome] ____________________
|
|
|
| self = <test_show_all.TestPPS object at 0x7f00def6dbe0>
|
|
|
| @allure.title("show all")
|
| @allure.severity(Severity.BLOCKER)
|
| def test_save_recent_search(self):
|
| > self.pps_page.login_and_open_pps_page(TestDataPPS.USER_PPS_STATIC, TestDataGeneral.PASSWORD_GENERAL_NEW)
|
|
|
| tests/ui_tests/pps_cps/pps/Other cases/test_show_all.py:14:
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
| tests/scr/pages/pps_page.py:100: in login_and_open_pps_page
|
| self.open_pps_page()
|
| tests/scr/pages/pps_page.py:104: in open_pps_page
|
| self.wait_element(self.CHECK_SEARCH_RESULTS)
|
| tests/scr/pages/base_page.py:58: in wait_element
|
| element = wait.until(EC.presence_of_element_located(by_locator))
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
| self = <selenium.webdriver.support.wait.WebDriverWait (session="7289f93238f7aa49a50daded3f3f7495")>
|
| method = <selenium.webdriver.support.expected_conditions.presence_of_element_located object at 0x7f00de7fc640>
|
| message = ''
|
|
|
| def until(self, method, message=''):
|
| """Calls the method provided with the driver as an argument until the \
|
| return value is not False."""
|
| screen = None
|
| stacktrace = None
|
|
|
| end_time = time.time() + self._timeout
|
| while True:
|
| try:
|
| value = method(self._driver)
|
| if value:
|
| return value
|
| except self._ignored_exceptions as exc:
|
| screen = getattr(exc, 'screen', None)
|
| stacktrace = getattr(exc, 'stacktrace', None)
|
| time.sleep(self._poll)
|
| if time.time() > end_time:
|
| break
|
| > raise TimeoutException(message, screen, stacktrace)
|
| E selenium.common.exceptions.TimeoutException: Message:
|
|
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/support/wait.py:80: TimeoutException
|
| ________ TestPPS.test_add_prospects_to_list_not_enough_credits[chrome] _________
|
|
|
| self = <tests.ui_tests.pps_cps.pps.Plans.test_add_to_list_not_enough_credits.TestPPS object at 0x7f00def79910>
|
|
|
| @allure.title("Add prospects not enough credits")
|
| @allure.severity(Severity.BLOCKER)
|
| def test_add_prospects_to_list_not_enough_credits(self):
|
| self.pps_page.login_and_open_pps_page(TestDataPPS.USER_PPS_NOT_ENOUGH_CREDITS, TestDataGeneral.PASSWORD_GENERAL_NEW)
|
| self.pps_page.choose_company_size(TestDataPPS.LIST_OF_SIZES[4])
|
| self.pps_page.click_search_and_wait_results()
|
| > self.pps_page.click_general_checkbox()
|
|
|
| tests/ui_tests/pps_cps/pps/Plans/test_add_to_list_not_enough_credits.py:16:
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
| tests/scr/pages/pps_page.py:290: in click_general_checkbox
|
| self.do_click(self.GENERAL_CHECKBOX)
|
| tests/scr/pages/base_page.py:15: in do_click
|
| WebDriverWait(self.driver, 20).until(EC.visibility_of_element_located(by_locator)).click()
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
| self = <selenium.webdriver.support.wait.WebDriverWait (session="e22c9d4323e02df834ba4711c99bcdf4")>
|
| method = <selenium.webdriver.support.expected_conditions.visibility_of_element_located object at 0x7f00de7902b0>
|
| message = ''
|
|
|
| def until(self, method, message=''):
|
| """Calls the method provided with the driver as an argument until the \
|
| return value is not False."""
|
| screen = None
|
| stacktrace = None
|
|
|
| end_time = time.time() + self._timeout
|
| while True:
|
| try:
|
| value = method(self._driver)
|
| if value:
|
| return value
|
| except self._ignored_exceptions as exc:
|
| screen = getattr(exc, 'screen', None)
|
| stacktrace = getattr(exc, 'stacktrace', None)
|
| time.sleep(self._poll)
|
| if time.time() > end_time:
|
| break
|
| > raise TimeoutException(message, screen, stacktrace)
|
| E selenium.common.exceptions.TimeoutException: Message:
|
|
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/support/wait.py:80: TimeoutException
|
| _ TestPPS.test_load_saved_search_from_filters_panel[chrome-Job title-list_of_positions0] _
|
|
|
| self = <tests.ui_tests.pps_cps.pps.Search.test_load_search.TestPPS object at 0x7f00def93760>
|
| filter_name = 'Job title'
|
| list_of_positions = ['QA Engineer', 'Project Manager', 'Software developer']
|
|
|
| @pytest.mark.parametrize('filter_name, list_of_positions', [
|
| (
|
| TestDataPPS.P_JOB_TITLE,
|
| ['QA Engineer', 'Project Manager', 'Software developer']
|
| )
|
| ])
|
| @allure.title("Load saved search from filters panel")
|
| @allure.severity(Severity.BLOCKER)
|
| def test_load_saved_search_from_filters_panel(self, filter_name, list_of_positions):
|
| > self.pps_page.login_and_open_pps_page(TestDataPPS.USER_PPS_STATIC, TestDataGeneral.PASSWORD_GENERAL_NEW)
|
|
|
| tests/ui_tests/pps_cps/pps/Search/test_load_search.py:19:
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
| tests/scr/pages/pps_page.py:100: in login_and_open_pps_page
|
| self.open_pps_page()
|
| tests/scr/pages/pps_page.py:104: in open_pps_page
|
| self.wait_element(self.CHECK_SEARCH_RESULTS)
|
| tests/scr/pages/base_page.py:58: in wait_element
|
| element = wait.until(EC.presence_of_element_located(by_locator))
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
| self = <selenium.webdriver.support.wait.WebDriverWait (session="13c25f1eade300054d388a2267beeac9")>
|
| method = <selenium.webdriver.support.expected_conditions.presence_of_element_located object at 0x7f00de773f40>
|
| message = ''
|
|
|
| def until(self, method, message=''):
|
| """Calls the method provided with the driver as an argument until the \
|
| return value is not False."""
|
| screen = None
|
| stacktrace = None
|
|
|
| end_time = time.time() + self._timeout
|
| while True:
|
| try:
|
| value = method(self._driver)
|
| if value:
|
| return value
|
| except self._ignored_exceptions as exc:
|
| screen = getattr(exc, 'screen', None)
|
| stacktrace = getattr(exc, 'stacktrace', None)
|
| time.sleep(self._poll)
|
| if time.time() > end_time:
|
| break
|
| > raise TimeoutException(message, screen, stacktrace)
|
| E selenium.common.exceptions.TimeoutException: Message:
|
|
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/support/wait.py:80: TimeoutException
|
| _ TestPPS.test_load_saved_search_from_details[chrome-Job title-list_of_positions0] _
|
|
|
| self = <tests.ui_tests.pps_cps.pps.Search.test_load_search.TestPPS object at 0x7f00def93970>
|
| filter_name = 'Job title'
|
| list_of_positions = ['QA Engineer', 'Project Manager', 'Software developer']
|
|
|
| @pytest.mark.parametrize('filter_name, list_of_positions', [
|
| (
|
| TestDataPPS.P_JOB_TITLE,
|
| ['QA Engineer', 'Project Manager', 'Software developer']
|
| )
|
| ])
|
| @allure.title("Load saved search from details")
|
| @allure.severity(Severity.BLOCKER)
|
| def test_load_saved_search_from_details(self, filter_name, list_of_positions):
|
| > self.pps_page.login_and_open_pps_page(TestDataPPS.USER_PPS_STATIC, TestDataGeneral.PASSWORD_GENERAL_NEW)
|
|
|
| tests/ui_tests/pps_cps/pps/Search/test_load_search.py:33:
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
| tests/scr/pages/pps_page.py:100: in login_and_open_pps_page
|
| self.open_pps_page()
|
| tests/scr/pages/pps_page.py:104: in open_pps_page
|
| self.wait_element(self.CHECK_SEARCH_RESULTS)
|
| tests/scr/pages/base_page.py:58: in wait_element
|
| element = wait.until(EC.presence_of_element_located(by_locator))
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
| self = <selenium.webdriver.support.wait.WebDriverWait (session="935e7f2d49153343c07f39a115484d4d")>
|
| method = <selenium.webdriver.support.expected_conditions.presence_of_element_located object at 0x7f00de7732b0>
|
| message = ''
|
|
|
| def until(self, method, message=''):
|
| """Calls the method provided with the driver as an argument until the \
|
| return value is not False."""
|
| screen = None
|
| stacktrace = None
|
|
|
| end_time = time.time() + self._timeout
|
| while True:
|
| try:
|
| value = method(self._driver)
|
| if value:
|
| return value
|
| except self._ignored_exceptions as exc:
|
| screen = getattr(exc, 'screen', None)
|
| stacktrace = getattr(exc, 'stacktrace', None)
|
| time.sleep(self._poll)
|
| if time.time() > end_time:
|
| break
|
| > raise TimeoutException(message, screen, stacktrace)
|
| E selenium.common.exceptions.TimeoutException: Message:
|
|
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/support/wait.py:80: TimeoutException
|
| ______________________ TestPPS.test_delete_search[chrome] ______________________
|
|
|
| self = <tests.ui_tests.pps_cps.pps.Search.test_remove_search.TestPPS object at 0x7f00def93f40>
|
|
|
| @allure.title("Delete search")
|
| @allure.severity(Severity.BLOCKER)
|
| def test_delete_search(self):
|
| self.pps_page.login_and_open_pps_page(TestDataPPS.USER_PPS, TestDataGeneral.PASSWORD_GENERAL)
|
| > self.pps_page.remove_saved_search(TestDataPPS.DEF_INDEX)
|
|
|
| tests/ui_tests/pps_cps/pps/Search/test_remove_search.py:15:
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
| tests/scr/pages/pps_page.py:635: in remove_saved_search
|
| self.click_yes_confirm_deletion(index)
|
| tests/scr/pages/pps_page.py:444: in click_yes_confirm_deletion
|
| self.click_one_of_elements(self.BUTTON_YES_CONFIRM_DELETION, counter)
|
| tests/scr/pages/base_page.py:21: in click_one_of_elements
|
| x = WebDriverWait(self.driver, 10, 1).until(EC.presence_of_all_elements_located(by_locator))
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
| self = <selenium.webdriver.support.wait.WebDriverWait (session="599ce8ae4c24e4eb4522ba84ea2094b9")>
|
| method = <selenium.webdriver.support.expected_conditions.presence_of_all_elements_located object at 0x7f00de833f40>
|
| message = ''
|
|
|
| def until(self, method, message=''):
|
| """Calls the method provided with the driver as an argument until the \
|
| return value is not False."""
|
| screen = None
|
| stacktrace = None
|
|
|
| end_time = time.time() + self._timeout
|
| while True:
|
| try:
|
| value = method(self._driver)
|
| if value:
|
| return value
|
| except self._ignored_exceptions as exc:
|
| screen = getattr(exc, 'screen', None)
|
| stacktrace = getattr(exc, 'stacktrace', None)
|
| time.sleep(self._poll)
|
| if time.time() > end_time:
|
| break
|
| > raise TimeoutException(message, screen, stacktrace)
|
| E selenium.common.exceptions.TimeoutException: Message:
|
|
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/support/wait.py:80: TimeoutException
|
| ________________ TestPPS.test_delete_search_on_details[chrome] _________________
|
|
|
| self = <tests.ui_tests.pps_cps.pps.Search.test_remove_search.TestPPS object at 0x7f00def93370>
|
|
|
| @allure.title("Delete search from open details")
|
| @allure.severity(Severity.BLOCKER)
|
| def test_delete_search_on_details(self):
|
| self.pps_page.login_and_open_pps_page(TestDataPPS.USER_PPS, TestDataGeneral.PASSWORD_GENERAL)
|
| index = len(self.pps_page.get_saved_search_names()) - 5
|
| > self.pps_page.remove_saved_search(index, True)
|
|
|
| tests/ui_tests/pps_cps/pps/Search/test_remove_search.py:22:
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
| tests/scr/pages/pps_page.py:635: in remove_saved_search
|
| self.click_yes_confirm_deletion(index)
|
| tests/scr/pages/pps_page.py:444: in click_yes_confirm_deletion
|
| self.click_one_of_elements(self.BUTTON_YES_CONFIRM_DELETION, counter)
|
| tests/scr/pages/base_page.py:21: in click_one_of_elements
|
| x = WebDriverWait(self.driver, 10, 1).until(EC.presence_of_all_elements_located(by_locator))
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
| self = <selenium.webdriver.support.wait.WebDriverWait (session="e97070a584bbda7128e32ac1657b4d7e")>
|
| method = <selenium.webdriver.support.expected_conditions.presence_of_all_elements_located object at 0x7f00de737a00>
|
| message = ''
|
|
|
| def until(self, method, message=''):
|
| """Calls the method provided with the driver as an argument until the \
|
| return value is not False."""
|
| screen = None
|
| stacktrace = None
|
|
|
| end_time = time.time() + self._timeout
|
| while True:
|
| try:
|
| value = method(self._driver)
|
| if value:
|
| return value
|
| except self._ignored_exceptions as exc:
|
| screen = getattr(exc, 'screen', None)
|
| stacktrace = getattr(exc, 'stacktrace', None)
|
| time.sleep(self._poll)
|
| if time.time() > end_time:
|
| break
|
| > raise TimeoutException(message, screen, stacktrace)
|
| E selenium.common.exceptions.TimeoutException: Message:
|
|
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/support/wait.py:80: TimeoutException
|
| ______________ TestPPS.test_rename_saved_search_from_menu[chrome] ______________
|
|
|
| self = <tests.ui_tests.pps_cps.pps.Search.test_rename_search.TestPPS object at 0x7f00def2c5e0>
|
|
|
| @allure.title("Rename search")
|
| @allure.severity(Severity.CRITICAL)
|
| def test_rename_saved_search_from_menu(self):
|
| self.pps_page.login_and_open_pps_page(TestDataPPS.USER_PPS, TestDataGeneral.PASSWORD_GENERAL)
|
| > self.pps_page.rename_saved_search(TestDataPPS.DEF_INDEX)
|
|
|
| tests/ui_tests/pps_cps/pps/Search/test_rename_search.py:14:
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
| tests/scr/pages/pps_page.py:617: in rename_saved_search
|
| self.choose_rename_filter_from_menu(index)
|
| tests/scr/pages/pps_page.py:436: in choose_rename_filter_from_menu
|
| assert self.get_atr(self.BUTTON_MODAL_SAVE_SEARCH, TestDataPPS.DISABLE_ATR)
|
| tests/scr/pages/base_page.py:124: in get_atr
|
| style = self.driver.find_element(*locator).get_attribute(atr)
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/remote/webdriver.py:976: in find_element
|
| return self.execute(Command.FIND_ELEMENT, {
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/remote/webdriver.py:321: in execute
|
| self.error_handler.check_response(response)
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
| self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x7f00de5d1790>
|
| response = {'status': 404, 'value': '{"value":{"error":"no such element","message":"no such element: Unable to locate element: {\...wn>\\n#16 0x55d865b1c847 \\u003Cunknown>\\n#17 0x55d865b2c243 \\u003Cunknown>\\n#18 0x7f2b8d09c6db start_thread\\n"}}'}
|
|
|
| def check_response(self, response):
|
| """
|
| Checks that a JSON response from the WebDriver does not have an error.
|
|
|
| :Args:
|
| - response - The JSON response from the WebDriver server as a dictionary
|
| object.
|
|
|
| :Raises: If the response contains an error message.
|
| """
|
| status = response.get('status', None)
|
| if status is None or status == ErrorCode.SUCCESS:
|
| return
|
| value = None
|
| message = response.get("message", "")
|
| screen = response.get("screen", "")
|
| stacktrace = None
|
| if isinstance(status, int):
|
| value_json = response.get('value', None)
|
| if value_json and isinstance(value_json, basestring):
|
| import json
|
| try:
|
| value = json.loads(value_json)
|
| if len(value.keys()) == 1:
|
| value = value['value']
|
| status = value.get('error', None)
|
| if status is None:
|
| status = value["status"]
|
| message = value["value"]
|
| if not isinstance(message, basestring):
|
| value = message
|
| message = message.get('message')
|
| else:
|
| message = value.get('message', None)
|
| except ValueError:
|
| pass
|
|
|
| exception_class = ErrorInResponseException
|
| if status in ErrorCode.NO_SUCH_ELEMENT:
|
| exception_class = NoSuchElementException
|
| elif status in ErrorCode.NO_SUCH_FRAME:
|
| exception_class = NoSuchFrameException
|
| elif status in ErrorCode.NO_SUCH_WINDOW:
|
| exception_class = NoSuchWindowException
|
| elif status in ErrorCode.STALE_ELEMENT_REFERENCE:
|
| exception_class = StaleElementReferenceException
|
| elif status in ErrorCode.ELEMENT_NOT_VISIBLE:
|
| exception_class = ElementNotVisibleException
|
| elif status in ErrorCode.INVALID_ELEMENT_STATE:
|
| exception_class = InvalidElementStateException
|
| elif status in ErrorCode.INVALID_SELECTOR \
|
| or status in ErrorCode.INVALID_XPATH_SELECTOR \
|
| or status in ErrorCode.INVALID_XPATH_SELECTOR_RETURN_TYPER:
|
| exception_class = InvalidSelectorException
|
| elif status in ErrorCode.ELEMENT_IS_NOT_SELECTABLE:
|
| exception_class = ElementNotSelectableException
|
| elif status in ErrorCode.ELEMENT_NOT_INTERACTABLE:
|
| exception_class = ElementNotInteractableException
|
| elif status in ErrorCode.INVALID_COOKIE_DOMAIN:
|
| exception_class = InvalidCookieDomainException
|
| elif status in ErrorCode.UNABLE_TO_SET_COOKIE:
|
| exception_class = UnableToSetCookieException
|
| elif status in ErrorCode.TIMEOUT:
|
| exception_class = TimeoutException
|
| elif status in ErrorCode.SCRIPT_TIMEOUT:
|
| exception_class = TimeoutException
|
| elif status in ErrorCode.UNKNOWN_ERROR:
|
| exception_class = WebDriverException
|
| elif status in ErrorCode.UNEXPECTED_ALERT_OPEN:
|
| exception_class = UnexpectedAlertPresentException
|
| elif status in ErrorCode.NO_ALERT_OPEN:
|
| exception_class = NoAlertPresentException
|
| elif status in ErrorCode.IME_NOT_AVAILABLE:
|
| exception_class = ImeNotAvailableException
|
| elif status in ErrorCode.IME_ENGINE_ACTIVATION_FAILED:
|
| exception_class = ImeActivationFailedException
|
| elif status in ErrorCode.MOVE_TARGET_OUT_OF_BOUNDS:
|
| exception_class = MoveTargetOutOfBoundsException
|
| elif status in ErrorCode.JAVASCRIPT_ERROR:
|
| exception_class = JavascriptException
|
| elif status in ErrorCode.SESSION_NOT_CREATED:
|
| exception_class = SessionNotCreatedException
|
| elif status in ErrorCode.INVALID_ARGUMENT:
|
| exception_class = InvalidArgumentException
|
| elif status in ErrorCode.NO_SUCH_COOKIE:
|
| exception_class = NoSuchCookieException
|
| elif status in ErrorCode.UNABLE_TO_CAPTURE_SCREEN:
|
| exception_class = ScreenshotException
|
| elif status in ErrorCode.ELEMENT_CLICK_INTERCEPTED:
|
| exception_class = ElementClickInterceptedException
|
| elif status in ErrorCode.INSECURE_CERTIFICATE:
|
| exception_class = InsecureCertificateException
|
| elif status in ErrorCode.INVALID_COORDINATES:
|
| exception_class = InvalidCoordinatesException
|
| elif status in ErrorCode.INVALID_SESSION_ID:
|
| exception_class = InvalidSessionIdException
|
| elif status in ErrorCode.UNKNOWN_METHOD:
|
| exception_class = UnknownMethodException
|
| else:
|
| exception_class = WebDriverException
|
| if value == '' or value is None:
|
| value = response['value']
|
| if isinstance(value, basestring):
|
| if exception_class == ErrorInResponseException:
|
| raise exception_class(response, value)
|
| raise exception_class(value)
|
| if message == "" and 'message' in value:
|
| message = value['message']
|
|
|
| screen = None
|
| if 'screen' in value:
|
| screen = value['screen']
|
|
|
| stacktrace = None
|
| if 'stackTrace' in value and value['stackTrace']:
|
| stacktrace = []
|
| try:
|
| for frame in value['stackTrace']:
|
| line = self._value_or_default(frame, 'lineNumber', '')
|
| file = self._value_or_default(frame, 'fileName', '<anonymous>')
|
| if line:
|
| file = "%s:%s" % (file, line)
|
| meth = self._value_or_default(frame, 'methodName', '<anonymous>')
|
| if 'className' in frame:
|
| meth = "%s.%s" % (frame['className'], meth)
|
| msg = " at %s (%s)"
|
| msg = msg % (meth, file)
|
| stacktrace.append(msg)
|
| except TypeError:
|
| pass
|
| if exception_class == ErrorInResponseException:
|
| raise exception_class(response, message)
|
| elif exception_class == UnexpectedAlertPresentException:
|
| alert_text = None
|
| if 'data' in value:
|
| alert_text = value['data'].get('text')
|
| elif 'alert' in value:
|
| alert_text = value['alert'].get('text')
|
| raise exception_class(message, screen, stacktrace, alert_text)
|
| > raise exception_class(message, screen, stacktrace)
|
| E selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[contains(text(), "Save")]/ancestor::button[@class="modal-snovio__btn btn-snovio minimize confirm"]"}
|
| E (Session info: headless chrome=114.0.5735.133)
|
|
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/remote/errorhandler.py:242: NoSuchElementException
|
| ____________ TestPPS.test_rename_saved_search_from_details[chrome] _____________
|
|
|
| self = <tests.ui_tests.pps_cps.pps.Search.test_rename_search.TestPPS object at 0x7f00def2c730>
|
|
|
| @allure.title("Rename search from details")
|
| @allure.severity(Severity.NORMAL)
|
| def test_rename_saved_search_from_details(self):
|
| > self.pps_page.login_and_open_pps_page(TestDataPPS.USER_PPS_STATIC, TestDataGeneral.PASSWORD_GENERAL_NEW)
|
|
|
| tests/ui_tests/pps_cps/pps/Search/test_rename_search.py:19:
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
| tests/scr/pages/pps_page.py:100: in login_and_open_pps_page
|
| self.open_pps_page()
|
| tests/scr/pages/pps_page.py:104: in open_pps_page
|
| self.wait_element(self.CHECK_SEARCH_RESULTS)
|
| tests/scr/pages/base_page.py:58: in wait_element
|
| element = wait.until(EC.presence_of_element_located(by_locator))
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
| self = <selenium.webdriver.support.wait.WebDriverWait (session="b4b62d18bcfbf1da67ebb0fd35438e82")>
|
| method = <selenium.webdriver.support.expected_conditions.presence_of_element_located object at 0x7f00de7fc100>
|
| message = ''
|
|
|
| def until(self, method, message=''):
|
| """Calls the method provided with the driver as an argument until the \
|
| return value is not False."""
|
| screen = None
|
| stacktrace = None
|
|
|
| end_time = time.time() + self._timeout
|
| while True:
|
| try:
|
| value = method(self._driver)
|
| if value:
|
| return value
|
| except self._ignored_exceptions as exc:
|
| screen = getattr(exc, 'screen', None)
|
| stacktrace = getattr(exc, 'stacktrace', None)
|
| time.sleep(self._poll)
|
| if time.time() > end_time:
|
| break
|
| > raise TimeoutException(message, screen, stacktrace)
|
| E selenium.common.exceptions.TimeoutException: Message:
|
|
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/support/wait.py:80: TimeoutException
|
| ___________________ TestPPS.test_save_recent_search[chrome] ____________________
|
|
|
| self = <tests.ui_tests.pps_cps.pps.Search.test_save_search.TestPPS object at 0x7f00def35130>
|
|
|
| @allure.title("Save recent search")
|
| @allure.severity(Severity.BLOCKER)
|
| def test_save_recent_search(self):
|
| self.pps_page.search_by_def_data(TestDataPPS.USER_PPS, TestDataGeneral.PASSWORD_GENERAL)
|
| self.pps_page.refresh_page()
|
| > self.pps_page.save_search(TestDataPPS.DEF_INDEX)
|
|
|
| tests/ui_tests/pps_cps/pps/Search/test_save_search.py:18:
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
| tests/scr/pages/pps_page.py:647: in save_search
|
| self.add_search_name()
|
| tests/scr/pages/pps_page.py:651: in add_search_name
|
| self.enter_saved_search_name(search_name)
|
| tests/scr/pages/pps_page.py:369: in enter_saved_search_name
|
| self.check_disabled_save_search_button()
|
| tests/scr/pages/pps_page.py:403: in check_disabled_save_search_button
|
| assert TestDataPPS.DISABLE_ATR in self.get_atr(self.SAVE_SEARCH_BUTTON, 'class')
|
| tests/scr/pages/base_page.py:124: in get_atr
|
| style = self.driver.find_element(*locator).get_attribute(atr)
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/remote/webdriver.py:976: in find_element
|
| return self.execute(Command.FIND_ELEMENT, {
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/remote/webdriver.py:321: in execute
|
| self.error_handler.check_response(response)
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
| self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x7f00de5e14f0>
|
| response = {'status': 404, 'value': '{"value":{"error":"no such element","message":"no such element: Unable to locate element: {\...wn>\\n#16 0x556405da5847 \\u003Cunknown>\\n#17 0x556405db5243 \\u003Cunknown>\\n#18 0x7fa71c3ec6db start_thread\\n"}}'}
|
|
|
| def check_response(self, response):
|
| """
|
| Checks that a JSON response from the WebDriver does not have an error.
|
|
|
| :Args:
|
| - response - The JSON response from the WebDriver server as a dictionary
|
| object.
|
|
|
| :Raises: If the response contains an error message.
|
| """
|
| status = response.get('status', None)
|
| if status is None or status == ErrorCode.SUCCESS:
|
| return
|
| value = None
|
| message = response.get("message", "")
|
| screen = response.get("screen", "")
|
| stacktrace = None
|
| if isinstance(status, int):
|
| value_json = response.get('value', None)
|
| if value_json and isinstance(value_json, basestring):
|
| import json
|
| try:
|
| value = json.loads(value_json)
|
| if len(value.keys()) == 1:
|
| value = value['value']
|
| status = value.get('error', None)
|
| if status is None:
|
| status = value["status"]
|
| message = value["value"]
|
| if not isinstance(message, basestring):
|
| value = message
|
| message = message.get('message')
|
| else:
|
| message = value.get('message', None)
|
| except ValueError:
|
| pass
|
|
|
| exception_class = ErrorInResponseException
|
| if status in ErrorCode.NO_SUCH_ELEMENT:
|
| exception_class = NoSuchElementException
|
| elif status in ErrorCode.NO_SUCH_FRAME:
|
| exception_class = NoSuchFrameException
|
| elif status in ErrorCode.NO_SUCH_WINDOW:
|
| exception_class = NoSuchWindowException
|
| elif status in ErrorCode.STALE_ELEMENT_REFERENCE:
|
| exception_class = StaleElementReferenceException
|
| elif status in ErrorCode.ELEMENT_NOT_VISIBLE:
|
| exception_class = ElementNotVisibleException
|
| elif status in ErrorCode.INVALID_ELEMENT_STATE:
|
| exception_class = InvalidElementStateException
|
| elif status in ErrorCode.INVALID_SELECTOR \
|
| or status in ErrorCode.INVALID_XPATH_SELECTOR \
|
| or status in ErrorCode.INVALID_XPATH_SELECTOR_RETURN_TYPER:
|
| exception_class = InvalidSelectorException
|
| elif status in ErrorCode.ELEMENT_IS_NOT_SELECTABLE:
|
| exception_class = ElementNotSelectableException
|
| elif status in ErrorCode.ELEMENT_NOT_INTERACTABLE:
|
| exception_class = ElementNotInteractableException
|
| elif status in ErrorCode.INVALID_COOKIE_DOMAIN:
|
| exception_class = InvalidCookieDomainException
|
| elif status in ErrorCode.UNABLE_TO_SET_COOKIE:
|
| exception_class = UnableToSetCookieException
|
| elif status in ErrorCode.TIMEOUT:
|
| exception_class = TimeoutException
|
| elif status in ErrorCode.SCRIPT_TIMEOUT:
|
| exception_class = TimeoutException
|
| elif status in ErrorCode.UNKNOWN_ERROR:
|
| exception_class = WebDriverException
|
| elif status in ErrorCode.UNEXPECTED_ALERT_OPEN:
|
| exception_class = UnexpectedAlertPresentException
|
| elif status in ErrorCode.NO_ALERT_OPEN:
|
| exception_class = NoAlertPresentException
|
| elif status in ErrorCode.IME_NOT_AVAILABLE:
|
| exception_class = ImeNotAvailableException
|
| elif status in ErrorCode.IME_ENGINE_ACTIVATION_FAILED:
|
| exception_class = ImeActivationFailedException
|
| elif status in ErrorCode.MOVE_TARGET_OUT_OF_BOUNDS:
|
| exception_class = MoveTargetOutOfBoundsException
|
| elif status in ErrorCode.JAVASCRIPT_ERROR:
|
| exception_class = JavascriptException
|
| elif status in ErrorCode.SESSION_NOT_CREATED:
|
| exception_class = SessionNotCreatedException
|
| elif status in ErrorCode.INVALID_ARGUMENT:
|
| exception_class = InvalidArgumentException
|
| elif status in ErrorCode.NO_SUCH_COOKIE:
|
| exception_class = NoSuchCookieException
|
| elif status in ErrorCode.UNABLE_TO_CAPTURE_SCREEN:
|
| exception_class = ScreenshotException
|
| elif status in ErrorCode.ELEMENT_CLICK_INTERCEPTED:
|
| exception_class = ElementClickInterceptedException
|
| elif status in ErrorCode.INSECURE_CERTIFICATE:
|
| exception_class = InsecureCertificateException
|
| elif status in ErrorCode.INVALID_COORDINATES:
|
| exception_class = InvalidCoordinatesException
|
| elif status in ErrorCode.INVALID_SESSION_ID:
|
| exception_class = InvalidSessionIdException
|
| elif status in ErrorCode.UNKNOWN_METHOD:
|
| exception_class = UnknownMethodException
|
| else:
|
| exception_class = WebDriverException
|
| if value == '' or value is None:
|
| value = response['value']
|
| if isinstance(value, basestring):
|
| if exception_class == ErrorInResponseException:
|
| raise exception_class(response, value)
|
| raise exception_class(value)
|
| if message == "" and 'message' in value:
|
| message = value['message']
|
|
|
| screen = None
|
| if 'screen' in value:
|
| screen = value['screen']
|
|
|
| stacktrace = None
|
| if 'stackTrace' in value and value['stackTrace']:
|
| stacktrace = []
|
| try:
|
| for frame in value['stackTrace']:
|
| line = self._value_or_default(frame, 'lineNumber', '')
|
| file = self._value_or_default(frame, 'fileName', '<anonymous>')
|
| if line:
|
| file = "%s:%s" % (file, line)
|
| meth = self._value_or_default(frame, 'methodName', '<anonymous>')
|
| if 'className' in frame:
|
| meth = "%s.%s" % (frame['className'], meth)
|
| msg = " at %s (%s)"
|
| msg = msg % (meth, file)
|
| stacktrace.append(msg)
|
| except TypeError:
|
| pass
|
| if exception_class == ErrorInResponseException:
|
| raise exception_class(response, message)
|
| elif exception_class == UnexpectedAlertPresentException:
|
| alert_text = None
|
| if 'data' in value:
|
| alert_text = value['data'].get('text')
|
| elif 'alert' in value:
|
| alert_text = value['alert'].get('text')
|
| raise exception_class(message, screen, stacktrace, alert_text)
|
| > raise exception_class(message, screen, stacktrace)
|
| E selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[contains(text(), "Save search")]//ancestor::button"}
|
| E (Session info: headless chrome=114.0.5735.133)
|
|
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/remote/errorhandler.py:242: NoSuchElementException
|
| ________________ TestPPS.test_save_search_filter_panel[chrome] _________________
|
|
|
| self = <tests.ui_tests.pps_cps.pps.Search.test_save_search.TestPPS object at 0x7f00def35280>
|
|
|
| @allure.title("Save recent search from filter panel")
|
| @allure.severity(Severity.BLOCKER)
|
| def test_save_search_filter_panel(self):
|
| self.pps_page.search_by_def_data(TestDataPPS.USER_SAVE, TestDataGeneral.PASSWORD_GENERAL_NEW)
|
| self.pps_page.click_save_on_filter_panel()
|
| > self.pps_page.add_search_name(True)
|
|
|
| tests/ui_tests/pps_cps/pps/Search/test_save_search.py:25:
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
| tests/scr/pages/pps_page.py:651: in add_search_name
|
| self.enter_saved_search_name(search_name)
|
| tests/scr/pages/pps_page.py:369: in enter_saved_search_name
|
| self.check_disabled_save_search_button()
|
| tests/scr/pages/pps_page.py:403: in check_disabled_save_search_button
|
| assert TestDataPPS.DISABLE_ATR in self.get_atr(self.SAVE_SEARCH_BUTTON, 'class')
|
| tests/scr/pages/base_page.py:124: in get_atr
|
| style = self.driver.find_element(*locator).get_attribute(atr)
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/remote/webdriver.py:976: in find_element
|
| return self.execute(Command.FIND_ELEMENT, {
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/remote/webdriver.py:321: in execute
|
| self.error_handler.check_response(response)
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
| self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x7f00de6321c0>
|
| response = {'status': 404, 'value': '{"value":{"error":"no such element","message":"no such element: Unable to locate element: {\...wn>\\n#16 0x55fdadf87847 \\u003Cunknown>\\n#17 0x55fdadf97243 \\u003Cunknown>\\n#18 0x7f34087b26db start_thread\\n"}}'}
|
|
|
| def check_response(self, response):
|
| """
|
| Checks that a JSON response from the WebDriver does not have an error.
|
|
|
| :Args:
|
| - response - The JSON response from the WebDriver server as a dictionary
|
| object.
|
|
|
| :Raises: If the response contains an error message.
|
| """
|
| status = response.get('status', None)
|
| if status is None or status == ErrorCode.SUCCESS:
|
| return
|
| value = None
|
| message = response.get("message", "")
|
| screen = response.get("screen", "")
|
| stacktrace = None
|
| if isinstance(status, int):
|
| value_json = response.get('value', None)
|
| if value_json and isinstance(value_json, basestring):
|
| import json
|
| try:
|
| value = json.loads(value_json)
|
| if len(value.keys()) == 1:
|
| value = value['value']
|
| status = value.get('error', None)
|
| if status is None:
|
| status = value["status"]
|
| message = value["value"]
|
| if not isinstance(message, basestring):
|
| value = message
|
| message = message.get('message')
|
| else:
|
| message = value.get('message', None)
|
| except ValueError:
|
| pass
|
|
|
| exception_class = ErrorInResponseException
|
| if status in ErrorCode.NO_SUCH_ELEMENT:
|
| exception_class = NoSuchElementException
|
| elif status in ErrorCode.NO_SUCH_FRAME:
|
| exception_class = NoSuchFrameException
|
| elif status in ErrorCode.NO_SUCH_WINDOW:
|
| exception_class = NoSuchWindowException
|
| elif status in ErrorCode.STALE_ELEMENT_REFERENCE:
|
| exception_class = StaleElementReferenceException
|
| elif status in ErrorCode.ELEMENT_NOT_VISIBLE:
|
| exception_class = ElementNotVisibleException
|
| elif status in ErrorCode.INVALID_ELEMENT_STATE:
|
| exception_class = InvalidElementStateException
|
| elif status in ErrorCode.INVALID_SELECTOR \
|
| or status in ErrorCode.INVALID_XPATH_SELECTOR \
|
| or status in ErrorCode.INVALID_XPATH_SELECTOR_RETURN_TYPER:
|
| exception_class = InvalidSelectorException
|
| elif status in ErrorCode.ELEMENT_IS_NOT_SELECTABLE:
|
| exception_class = ElementNotSelectableException
|
| elif status in ErrorCode.ELEMENT_NOT_INTERACTABLE:
|
| exception_class = ElementNotInteractableException
|
| elif status in ErrorCode.INVALID_COOKIE_DOMAIN:
|
| exception_class = InvalidCookieDomainException
|
| elif status in ErrorCode.UNABLE_TO_SET_COOKIE:
|
| exception_class = UnableToSetCookieException
|
| elif status in ErrorCode.TIMEOUT:
|
| exception_class = TimeoutException
|
| elif status in ErrorCode.SCRIPT_TIMEOUT:
|
| exception_class = TimeoutException
|
| elif status in ErrorCode.UNKNOWN_ERROR:
|
| exception_class = WebDriverException
|
| elif status in ErrorCode.UNEXPECTED_ALERT_OPEN:
|
| exception_class = UnexpectedAlertPresentException
|
| elif status in ErrorCode.NO_ALERT_OPEN:
|
| exception_class = NoAlertPresentException
|
| elif status in ErrorCode.IME_NOT_AVAILABLE:
|
| exception_class = ImeNotAvailableException
|
| elif status in ErrorCode.IME_ENGINE_ACTIVATION_FAILED:
|
| exception_class = ImeActivationFailedException
|
| elif status in ErrorCode.MOVE_TARGET_OUT_OF_BOUNDS:
|
| exception_class = MoveTargetOutOfBoundsException
|
| elif status in ErrorCode.JAVASCRIPT_ERROR:
|
| exception_class = JavascriptException
|
| elif status in ErrorCode.SESSION_NOT_CREATED:
|
| exception_class = SessionNotCreatedException
|
| elif status in ErrorCode.INVALID_ARGUMENT:
|
| exception_class = InvalidArgumentException
|
| elif status in ErrorCode.NO_SUCH_COOKIE:
|
| exception_class = NoSuchCookieException
|
| elif status in ErrorCode.UNABLE_TO_CAPTURE_SCREEN:
|
| exception_class = ScreenshotException
|
| elif status in ErrorCode.ELEMENT_CLICK_INTERCEPTED:
|
| exception_class = ElementClickInterceptedException
|
| elif status in ErrorCode.INSECURE_CERTIFICATE:
|
| exception_class = InsecureCertificateException
|
| elif status in ErrorCode.INVALID_COORDINATES:
|
| exception_class = InvalidCoordinatesException
|
| elif status in ErrorCode.INVALID_SESSION_ID:
|
| exception_class = InvalidSessionIdException
|
| elif status in ErrorCode.UNKNOWN_METHOD:
|
| exception_class = UnknownMethodException
|
| else:
|
| exception_class = WebDriverException
|
| if value == '' or value is None:
|
| value = response['value']
|
| if isinstance(value, basestring):
|
| if exception_class == ErrorInResponseException:
|
| raise exception_class(response, value)
|
| raise exception_class(value)
|
| if message == "" and 'message' in value:
|
| message = value['message']
|
|
|
| screen = None
|
| if 'screen' in value:
|
| screen = value['screen']
|
|
|
| stacktrace = None
|
| if 'stackTrace' in value and value['stackTrace']:
|
| stacktrace = []
|
| try:
|
| for frame in value['stackTrace']:
|
| line = self._value_or_default(frame, 'lineNumber', '')
|
| file = self._value_or_default(frame, 'fileName', '<anonymous>')
|
| if line:
|
| file = "%s:%s" % (file, line)
|
| meth = self._value_or_default(frame, 'methodName', '<anonymous>')
|
| if 'className' in frame:
|
| meth = "%s.%s" % (frame['className'], meth)
|
| msg = " at %s (%s)"
|
| msg = msg % (meth, file)
|
| stacktrace.append(msg)
|
| except TypeError:
|
| pass
|
| if exception_class == ErrorInResponseException:
|
| raise exception_class(response, message)
|
| elif exception_class == UnexpectedAlertPresentException:
|
| alert_text = None
|
| if 'data' in value:
|
| alert_text = value['data'].get('text')
|
| elif 'alert' in value:
|
| alert_text = value['alert'].get('text')
|
| raise exception_class(message, screen, stacktrace, alert_text)
|
| > raise exception_class(message, screen, stacktrace)
|
| E selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[contains(text(), "Save search")]//ancestor::button"}
|
| E (Session info: headless chrome=114.0.5735.133)
|
|
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/remote/errorhandler.py:242: NoSuchElementException
|
| ________________ TestPPS.test_save_search_open_details[chrome] _________________
|
|
|
| self = <tests.ui_tests.pps_cps.pps.Search.test_save_search.TestPPS object at 0x7f00def35400>
|
|
|
| @allure.title("Save recent search from open details")
|
| @allure.severity(Severity.NORMAL)
|
| def test_save_search_open_details(self):
|
| self.pps_page.search_by_def_data(TestDataPPS.USER_PPS, TestDataGeneral.PASSWORD_GENERAL)
|
| self.pps_page.refresh_page()
|
| index = len(self.pps_page.get_saved_search_names()) + 1
|
| > self.pps_page.save_search(index, True)
|
|
|
| tests/ui_tests/pps_cps/pps/Search/test_save_search.py:34:
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
| tests/scr/pages/pps_page.py:647: in save_search
|
| self.add_search_name()
|
| tests/scr/pages/pps_page.py:651: in add_search_name
|
| self.enter_saved_search_name(search_name)
|
| tests/scr/pages/pps_page.py:369: in enter_saved_search_name
|
| self.check_disabled_save_search_button()
|
| tests/scr/pages/pps_page.py:403: in check_disabled_save_search_button
|
| assert TestDataPPS.DISABLE_ATR in self.get_atr(self.SAVE_SEARCH_BUTTON, 'class')
|
| tests/scr/pages/base_page.py:124: in get_atr
|
| style = self.driver.find_element(*locator).get_attribute(atr)
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/remote/webdriver.py:976: in find_element
|
| return self.execute(Command.FIND_ELEMENT, {
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/remote/webdriver.py:321: in execute
|
| self.error_handler.check_response(response)
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
| self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x7f00de7c1670>
|
| response = {'status': 404, 'value': '{"value":{"error":"no such element","message":"no such element: Unable to locate element: {\...wn>\\n#16 0x56101684b847 \\u003Cunknown>\\n#17 0x56101685b243 \\u003Cunknown>\\n#18 0x7f07c59326db start_thread\\n"}}'}
|
|
|
| def check_response(self, response):
|
| """
|
| Checks that a JSON response from the WebDriver does not have an error.
|
|
|
| :Args:
|
| - response - The JSON response from the WebDriver server as a dictionary
|
| object.
|
|
|
| :Raises: If the response contains an error message.
|
| """
|
| status = response.get('status', None)
|
| if status is None or status == ErrorCode.SUCCESS:
|
| return
|
| value = None
|
| message = response.get("message", "")
|
| screen = response.get("screen", "")
|
| stacktrace = None
|
| if isinstance(status, int):
|
| value_json = response.get('value', None)
|
| if value_json and isinstance(value_json, basestring):
|
| import json
|
| try:
|
| value = json.loads(value_json)
|
| if len(value.keys()) == 1:
|
| value = value['value']
|
| status = value.get('error', None)
|
| if status is None:
|
| status = value["status"]
|
| message = value["value"]
|
| if not isinstance(message, basestring):
|
| value = message
|
| message = message.get('message')
|
| else:
|
| message = value.get('message', None)
|
| except ValueError:
|
| pass
|
|
|
| exception_class = ErrorInResponseException
|
| if status in ErrorCode.NO_SUCH_ELEMENT:
|
| exception_class = NoSuchElementException
|
| elif status in ErrorCode.NO_SUCH_FRAME:
|
| exception_class = NoSuchFrameException
|
| elif status in ErrorCode.NO_SUCH_WINDOW:
|
| exception_class = NoSuchWindowException
|
| elif status in ErrorCode.STALE_ELEMENT_REFERENCE:
|
| exception_class = StaleElementReferenceException
|
| elif status in ErrorCode.ELEMENT_NOT_VISIBLE:
|
| exception_class = ElementNotVisibleException
|
| elif status in ErrorCode.INVALID_ELEMENT_STATE:
|
| exception_class = InvalidElementStateException
|
| elif status in ErrorCode.INVALID_SELECTOR \
|
| or status in ErrorCode.INVALID_XPATH_SELECTOR \
|
| or status in ErrorCode.INVALID_XPATH_SELECTOR_RETURN_TYPER:
|
| exception_class = InvalidSelectorException
|
| elif status in ErrorCode.ELEMENT_IS_NOT_SELECTABLE:
|
| exception_class = ElementNotSelectableException
|
| elif status in ErrorCode.ELEMENT_NOT_INTERACTABLE:
|
| exception_class = ElementNotInteractableException
|
| elif status in ErrorCode.INVALID_COOKIE_DOMAIN:
|
| exception_class = InvalidCookieDomainException
|
| elif status in ErrorCode.UNABLE_TO_SET_COOKIE:
|
| exception_class = UnableToSetCookieException
|
| elif status in ErrorCode.TIMEOUT:
|
| exception_class = TimeoutException
|
| elif status in ErrorCode.SCRIPT_TIMEOUT:
|
| exception_class = TimeoutException
|
| elif status in ErrorCode.UNKNOWN_ERROR:
|
| exception_class = WebDriverException
|
| elif status in ErrorCode.UNEXPECTED_ALERT_OPEN:
|
| exception_class = UnexpectedAlertPresentException
|
| elif status in ErrorCode.NO_ALERT_OPEN:
|
| exception_class = NoAlertPresentException
|
| elif status in ErrorCode.IME_NOT_AVAILABLE:
|
| exception_class = ImeNotAvailableException
|
| elif status in ErrorCode.IME_ENGINE_ACTIVATION_FAILED:
|
| exception_class = ImeActivationFailedException
|
| elif status in ErrorCode.MOVE_TARGET_OUT_OF_BOUNDS:
|
| exception_class = MoveTargetOutOfBoundsException
|
| elif status in ErrorCode.JAVASCRIPT_ERROR:
|
| exception_class = JavascriptException
|
| elif status in ErrorCode.SESSION_NOT_CREATED:
|
| exception_class = SessionNotCreatedException
|
| elif status in ErrorCode.INVALID_ARGUMENT:
|
| exception_class = InvalidArgumentException
|
| elif status in ErrorCode.NO_SUCH_COOKIE:
|
| exception_class = NoSuchCookieException
|
| elif status in ErrorCode.UNABLE_TO_CAPTURE_SCREEN:
|
| exception_class = ScreenshotException
|
| elif status in ErrorCode.ELEMENT_CLICK_INTERCEPTED:
|
| exception_class = ElementClickInterceptedException
|
| elif status in ErrorCode.INSECURE_CERTIFICATE:
|
| exception_class = InsecureCertificateException
|
| elif status in ErrorCode.INVALID_COORDINATES:
|
| exception_class = InvalidCoordinatesException
|
| elif status in ErrorCode.INVALID_SESSION_ID:
|
| exception_class = InvalidSessionIdException
|
| elif status in ErrorCode.UNKNOWN_METHOD:
|
| exception_class = UnknownMethodException
|
| else:
|
| exception_class = WebDriverException
|
| if value == '' or value is None:
|
| value = response['value']
|
| if isinstance(value, basestring):
|
| if exception_class == ErrorInResponseException:
|
| raise exception_class(response, value)
|
| raise exception_class(value)
|
| if message == "" and 'message' in value:
|
| message = value['message']
|
|
|
| screen = None
|
| if 'screen' in value:
|
| screen = value['screen']
|
|
|
| stacktrace = None
|
| if 'stackTrace' in value and value['stackTrace']:
|
| stacktrace = []
|
| try:
|
| for frame in value['stackTrace']:
|
| line = self._value_or_default(frame, 'lineNumber', '')
|
| file = self._value_or_default(frame, 'fileName', '<anonymous>')
|
| if line:
|
| file = "%s:%s" % (file, line)
|
| meth = self._value_or_default(frame, 'methodName', '<anonymous>')
|
| if 'className' in frame:
|
| meth = "%s.%s" % (frame['className'], meth)
|
| msg = " at %s (%s)"
|
| msg = msg % (meth, file)
|
| stacktrace.append(msg)
|
| except TypeError:
|
| pass
|
| if exception_class == ErrorInResponseException:
|
| raise exception_class(response, message)
|
| elif exception_class == UnexpectedAlertPresentException:
|
| alert_text = None
|
| if 'data' in value:
|
| alert_text = value['data'].get('text')
|
| elif 'alert' in value:
|
| alert_text = value['alert'].get('text')
|
| raise exception_class(message, screen, stacktrace, alert_text)
|
| > raise exception_class(message, screen, stacktrace)
|
| E selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[contains(text(), "Save search")]//ancestor::button"}
|
| E (Session info: headless chrome=114.0.5735.133)
|
|
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/remote/errorhandler.py:242: NoSuchElementException
|
| ___________ TestPPS.test_save_search_with_already_exist_name[chrome] ___________
|
|
|
| self = <tests.ui_tests.pps_cps.pps.Search.test_save_search.TestPPS object at 0x7f00def35580>
|
|
|
| @allure.title("Save search with already exist name")
|
| @allure.severity(Severity.NORMAL)
|
| def test_save_search_with_already_exist_name(self):
|
| self.pps_page.login_and_open_pps_page(TestDataPPS.USER_PPS, TestDataGeneral.PASSWORD_GENERAL)
|
| name_of_saved_search = self.pps_page.get_saved_search_names()[TestDataPPS.DEF_INDEX]
|
| self.pps_page.def_search()
|
| self.pps_page.click_save_on_filter_panel()
|
| > self.pps_page.enter_saved_search_name(name_of_saved_search)
|
|
|
| tests/ui_tests/pps_cps/pps/Search/test_save_search.py:43:
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
| tests/scr/pages/pps_page.py:369: in enter_saved_search_name
|
| self.check_disabled_save_search_button()
|
| tests/scr/pages/pps_page.py:403: in check_disabled_save_search_button
|
| assert TestDataPPS.DISABLE_ATR in self.get_atr(self.SAVE_SEARCH_BUTTON, 'class')
|
| tests/scr/pages/base_page.py:124: in get_atr
|
| style = self.driver.find_element(*locator).get_attribute(atr)
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/remote/webdriver.py:976: in find_element
|
| return self.execute(Command.FIND_ELEMENT, {
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/remote/webdriver.py:321: in execute
|
| self.error_handler.check_response(response)
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
| self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x7f00de7a5a30>
|
| response = {'status': 404, 'value': '{"value":{"error":"no such element","message":"no such element: Unable to locate element: {\...wn>\\n#16 0x55df71d0b847 \\u003Cunknown>\\n#17 0x55df71d1b243 \\u003Cunknown>\\n#18 0x7f0addc4e6db start_thread\\n"}}'}
|
|
|
| def check_response(self, response):
|
| """
|
| Checks that a JSON response from the WebDriver does not have an error.
|
|
|
| :Args:
|
| - response - The JSON response from the WebDriver server as a dictionary
|
| object.
|
|
|
| :Raises: If the response contains an error message.
|
| """
|
| status = response.get('status', None)
|
| if status is None or status == ErrorCode.SUCCESS:
|
| return
|
| value = None
|
| message = response.get("message", "")
|
| screen = response.get("screen", "")
|
| stacktrace = None
|
| if isinstance(status, int):
|
| value_json = response.get('value', None)
|
| if value_json and isinstance(value_json, basestring):
|
| import json
|
| try:
|
| value = json.loads(value_json)
|
| if len(value.keys()) == 1:
|
| value = value['value']
|
| status = value.get('error', None)
|
| if status is None:
|
| status = value["status"]
|
| message = value["value"]
|
| if not isinstance(message, basestring):
|
| value = message
|
| message = message.get('message')
|
| else:
|
| message = value.get('message', None)
|
| except ValueError:
|
| pass
|
|
|
| exception_class = ErrorInResponseException
|
| if status in ErrorCode.NO_SUCH_ELEMENT:
|
| exception_class = NoSuchElementException
|
| elif status in ErrorCode.NO_SUCH_FRAME:
|
| exception_class = NoSuchFrameException
|
| elif status in ErrorCode.NO_SUCH_WINDOW:
|
| exception_class = NoSuchWindowException
|
| elif status in ErrorCode.STALE_ELEMENT_REFERENCE:
|
| exception_class = StaleElementReferenceException
|
| elif status in ErrorCode.ELEMENT_NOT_VISIBLE:
|
| exception_class = ElementNotVisibleException
|
| elif status in ErrorCode.INVALID_ELEMENT_STATE:
|
| exception_class = InvalidElementStateException
|
| elif status in ErrorCode.INVALID_SELECTOR \
|
| or status in ErrorCode.INVALID_XPATH_SELECTOR \
|
| or status in ErrorCode.INVALID_XPATH_SELECTOR_RETURN_TYPER:
|
| exception_class = InvalidSelectorException
|
| elif status in ErrorCode.ELEMENT_IS_NOT_SELECTABLE:
|
| exception_class = ElementNotSelectableException
|
| elif status in ErrorCode.ELEMENT_NOT_INTERACTABLE:
|
| exception_class = ElementNotInteractableException
|
| elif status in ErrorCode.INVALID_COOKIE_DOMAIN:
|
| exception_class = InvalidCookieDomainException
|
| elif status in ErrorCode.UNABLE_TO_SET_COOKIE:
|
| exception_class = UnableToSetCookieException
|
| elif status in ErrorCode.TIMEOUT:
|
| exception_class = TimeoutException
|
| elif status in ErrorCode.SCRIPT_TIMEOUT:
|
| exception_class = TimeoutException
|
| elif status in ErrorCode.UNKNOWN_ERROR:
|
| exception_class = WebDriverException
|
| elif status in ErrorCode.UNEXPECTED_ALERT_OPEN:
|
| exception_class = UnexpectedAlertPresentException
|
| elif status in ErrorCode.NO_ALERT_OPEN:
|
| exception_class = NoAlertPresentException
|
| elif status in ErrorCode.IME_NOT_AVAILABLE:
|
| exception_class = ImeNotAvailableException
|
| elif status in ErrorCode.IME_ENGINE_ACTIVATION_FAILED:
|
| exception_class = ImeActivationFailedException
|
| elif status in ErrorCode.MOVE_TARGET_OUT_OF_BOUNDS:
|
| exception_class = MoveTargetOutOfBoundsException
|
| elif status in ErrorCode.JAVASCRIPT_ERROR:
|
| exception_class = JavascriptException
|
| elif status in ErrorCode.SESSION_NOT_CREATED:
|
| exception_class = SessionNotCreatedException
|
| elif status in ErrorCode.INVALID_ARGUMENT:
|
| exception_class = InvalidArgumentException
|
| elif status in ErrorCode.NO_SUCH_COOKIE:
|
| exception_class = NoSuchCookieException
|
| elif status in ErrorCode.UNABLE_TO_CAPTURE_SCREEN:
|
| exception_class = ScreenshotException
|
| elif status in ErrorCode.ELEMENT_CLICK_INTERCEPTED:
|
| exception_class = ElementClickInterceptedException
|
| elif status in ErrorCode.INSECURE_CERTIFICATE:
|
| exception_class = InsecureCertificateException
|
| elif status in ErrorCode.INVALID_COORDINATES:
|
| exception_class = InvalidCoordinatesException
|
| elif status in ErrorCode.INVALID_SESSION_ID:
|
| exception_class = InvalidSessionIdException
|
| elif status in ErrorCode.UNKNOWN_METHOD:
|
| exception_class = UnknownMethodException
|
| else:
|
| exception_class = WebDriverException
|
| if value == '' or value is None:
|
| value = response['value']
|
| if isinstance(value, basestring):
|
| if exception_class == ErrorInResponseException:
|
| raise exception_class(response, value)
|
| raise exception_class(value)
|
| if message == "" and 'message' in value:
|
| message = value['message']
|
|
|
| screen = None
|
| if 'screen' in value:
|
| screen = value['screen']
|
|
|
| stacktrace = None
|
| if 'stackTrace' in value and value['stackTrace']:
|
| stacktrace = []
|
| try:
|
| for frame in value['stackTrace']:
|
| line = self._value_or_default(frame, 'lineNumber', '')
|
| file = self._value_or_default(frame, 'fileName', '<anonymous>')
|
| if line:
|
| file = "%s:%s" % (file, line)
|
| meth = self._value_or_default(frame, 'methodName', '<anonymous>')
|
| if 'className' in frame:
|
| meth = "%s.%s" % (frame['className'], meth)
|
| msg = " at %s (%s)"
|
| msg = msg % (meth, file)
|
| stacktrace.append(msg)
|
| except TypeError:
|
| pass
|
| if exception_class == ErrorInResponseException:
|
| raise exception_class(response, message)
|
| elif exception_class == UnexpectedAlertPresentException:
|
| alert_text = None
|
| if 'data' in value:
|
| alert_text = value['data'].get('text')
|
| elif 'alert' in value:
|
| alert_text = value['alert'].get('text')
|
| raise exception_class(message, screen, stacktrace, alert_text)
|
| > raise exception_class(message, screen, stacktrace)
|
| E selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[contains(text(), "Save search")]//ancestor::button"}
|
| E (Session info: headless chrome=114.0.5735.133)
|
|
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/remote/errorhandler.py:242: NoSuchElementException
|
| ___________ TestPPS.test_save_search_enter_spaces_and_cancel[chrome] ___________
|
|
|
| self = <tests.ui_tests.pps_cps.pps.Search.test_save_search.TestPPS object at 0x7f00def35700>
|
|
|
| @allure.title("Save search with already exist name")
|
| @allure.severity(Severity.NORMAL)
|
| def test_save_search_enter_spaces_and_cancel(self):
|
| self.pps_page.login_and_open_pps_page(TestDataPPS.USER_PPS, TestDataGeneral.PASSWORD_GENERAL)
|
| self.pps_page.click_save_search(TestDataPPS.DEF_INDEX)
|
| > self.pps_page.enter_saved_search_name(' ')
|
|
|
| tests/ui_tests/pps_cps/pps/Search/test_save_search.py:53:
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
| tests/scr/pages/pps_page.py:369: in enter_saved_search_name
|
| self.check_disabled_save_search_button()
|
| tests/scr/pages/pps_page.py:403: in check_disabled_save_search_button
|
| assert TestDataPPS.DISABLE_ATR in self.get_atr(self.SAVE_SEARCH_BUTTON, 'class')
|
| tests/scr/pages/base_page.py:124: in get_atr
|
| style = self.driver.find_element(*locator).get_attribute(atr)
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/remote/webdriver.py:976: in find_element
|
| return self.execute(Command.FIND_ELEMENT, {
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/remote/webdriver.py:321: in execute
|
| self.error_handler.check_response(response)
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
| self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x7f00de625a00>
|
| response = {'status': 404, 'value': '{"value":{"error":"no such element","message":"no such element: Unable to locate element: {\...wn>\\n#16 0x5647210de847 \\u003Cunknown>\\n#17 0x5647210ee243 \\u003Cunknown>\\n#18 0x7faa472716db start_thread\\n"}}'}
|
|
|
| def check_response(self, response):
|
| """
|
| Checks that a JSON response from the WebDriver does not have an error.
|
|
|
| :Args:
|
| - response - The JSON response from the WebDriver server as a dictionary
|
| object.
|
|
|
| :Raises: If the response contains an error message.
|
| """
|
| status = response.get('status', None)
|
| if status is None or status == ErrorCode.SUCCESS:
|
| return
|
| value = None
|
| message = response.get("message", "")
|
| screen = response.get("screen", "")
|
| stacktrace = None
|
| if isinstance(status, int):
|
| value_json = response.get('value', None)
|
| if value_json and isinstance(value_json, basestring):
|
| import json
|
| try:
|
| value = json.loads(value_json)
|
| if len(value.keys()) == 1:
|
| value = value['value']
|
| status = value.get('error', None)
|
| if status is None:
|
| status = value["status"]
|
| message = value["value"]
|
| if not isinstance(message, basestring):
|
| value = message
|
| message = message.get('message')
|
| else:
|
| message = value.get('message', None)
|
| except ValueError:
|
| pass
|
|
|
| exception_class = ErrorInResponseException
|
| if status in ErrorCode.NO_SUCH_ELEMENT:
|
| exception_class = NoSuchElementException
|
| elif status in ErrorCode.NO_SUCH_FRAME:
|
| exception_class = NoSuchFrameException
|
| elif status in ErrorCode.NO_SUCH_WINDOW:
|
| exception_class = NoSuchWindowException
|
| elif status in ErrorCode.STALE_ELEMENT_REFERENCE:
|
| exception_class = StaleElementReferenceException
|
| elif status in ErrorCode.ELEMENT_NOT_VISIBLE:
|
| exception_class = ElementNotVisibleException
|
| elif status in ErrorCode.INVALID_ELEMENT_STATE:
|
| exception_class = InvalidElementStateException
|
| elif status in ErrorCode.INVALID_SELECTOR \
|
| or status in ErrorCode.INVALID_XPATH_SELECTOR \
|
| or status in ErrorCode.INVALID_XPATH_SELECTOR_RETURN_TYPER:
|
| exception_class = InvalidSelectorException
|
| elif status in ErrorCode.ELEMENT_IS_NOT_SELECTABLE:
|
| exception_class = ElementNotSelectableException
|
| elif status in ErrorCode.ELEMENT_NOT_INTERACTABLE:
|
| exception_class = ElementNotInteractableException
|
| elif status in ErrorCode.INVALID_COOKIE_DOMAIN:
|
| exception_class = InvalidCookieDomainException
|
| elif status in ErrorCode.UNABLE_TO_SET_COOKIE:
|
| exception_class = UnableToSetCookieException
|
| elif status in ErrorCode.TIMEOUT:
|
| exception_class = TimeoutException
|
| elif status in ErrorCode.SCRIPT_TIMEOUT:
|
| exception_class = TimeoutException
|
| elif status in ErrorCode.UNKNOWN_ERROR:
|
| exception_class = WebDriverException
|
| elif status in ErrorCode.UNEXPECTED_ALERT_OPEN:
|
| exception_class = UnexpectedAlertPresentException
|
| elif status in ErrorCode.NO_ALERT_OPEN:
|
| exception_class = NoAlertPresentException
|
| elif status in ErrorCode.IME_NOT_AVAILABLE:
|
| exception_class = ImeNotAvailableException
|
| elif status in ErrorCode.IME_ENGINE_ACTIVATION_FAILED:
|
| exception_class = ImeActivationFailedException
|
| elif status in ErrorCode.MOVE_TARGET_OUT_OF_BOUNDS:
|
| exception_class = MoveTargetOutOfBoundsException
|
| elif status in ErrorCode.JAVASCRIPT_ERROR:
|
| exception_class = JavascriptException
|
| elif status in ErrorCode.SESSION_NOT_CREATED:
|
| exception_class = SessionNotCreatedException
|
| elif status in ErrorCode.INVALID_ARGUMENT:
|
| exception_class = InvalidArgumentException
|
| elif status in ErrorCode.NO_SUCH_COOKIE:
|
| exception_class = NoSuchCookieException
|
| elif status in ErrorCode.UNABLE_TO_CAPTURE_SCREEN:
|
| exception_class = ScreenshotException
|
| elif status in ErrorCode.ELEMENT_CLICK_INTERCEPTED:
|
| exception_class = ElementClickInterceptedException
|
| elif status in ErrorCode.INSECURE_CERTIFICATE:
|
| exception_class = InsecureCertificateException
|
| elif status in ErrorCode.INVALID_COORDINATES:
|
| exception_class = InvalidCoordinatesException
|
| elif status in ErrorCode.INVALID_SESSION_ID:
|
| exception_class = InvalidSessionIdException
|
| elif status in ErrorCode.UNKNOWN_METHOD:
|
| exception_class = UnknownMethodException
|
| else:
|
| exception_class = WebDriverException
|
| if value == '' or value is None:
|
| value = response['value']
|
| if isinstance(value, basestring):
|
| if exception_class == ErrorInResponseException:
|
| raise exception_class(response, value)
|
| raise exception_class(value)
|
| if message == "" and 'message' in value:
|
| message = value['message']
|
|
|
| screen = None
|
| if 'screen' in value:
|
| screen = value['screen']
|
|
|
| stacktrace = None
|
| if 'stackTrace' in value and value['stackTrace']:
|
| stacktrace = []
|
| try:
|
| for frame in value['stackTrace']:
|
| line = self._value_or_default(frame, 'lineNumber', '')
|
| file = self._value_or_default(frame, 'fileName', '<anonymous>')
|
| if line:
|
| file = "%s:%s" % (file, line)
|
| meth = self._value_or_default(frame, 'methodName', '<anonymous>')
|
| if 'className' in frame:
|
| meth = "%s.%s" % (frame['className'], meth)
|
| msg = " at %s (%s)"
|
| msg = msg % (meth, file)
|
| stacktrace.append(msg)
|
| except TypeError:
|
| pass
|
| if exception_class == ErrorInResponseException:
|
| raise exception_class(response, message)
|
| elif exception_class == UnexpectedAlertPresentException:
|
| alert_text = None
|
| if 'data' in value:
|
| alert_text = value['data'].get('text')
|
| elif 'alert' in value:
|
| alert_text = value['alert'].get('text')
|
| raise exception_class(message, screen, stacktrace, alert_text)
|
| > raise exception_class(message, screen, stacktrace)
|
| E selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[contains(text(), "Save search")]//ancestor::button"}
|
| E (Session info: headless chrome=114.0.5735.133)
|
|
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/remote/errorhandler.py:242: NoSuchElementException
|
| __________________ TestPPS.test_save_more_10_searches[chrome] __________________
|
|
|
| self = <tests.ui_tests.pps_cps.pps.Search.test_save_search.TestPPS object at 0x7f00def35880>
|
|
|
| @allure.title("Save more 10 searches")
|
| @allure.severity(Severity.NORMAL)
|
| def test_save_more_10_searches(self):
|
| > self.pps_page.login_and_open_pps_page(TestDataPPS.USER_PPS_STATIC, TestDataGeneral.PASSWORD_GENERAL_NEW)
|
|
|
| tests/ui_tests/pps_cps/pps/Search/test_save_search.py:60:
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
| tests/scr/pages/pps_page.py:100: in login_and_open_pps_page
|
| self.open_pps_page()
|
| tests/scr/pages/pps_page.py:104: in open_pps_page
|
| self.wait_element(self.CHECK_SEARCH_RESULTS)
|
| tests/scr/pages/base_page.py:58: in wait_element
|
| element = wait.until(EC.presence_of_element_located(by_locator))
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
| self = <selenium.webdriver.support.wait.WebDriverWait (session="daa2dc86c47c0d70b536fb01b313ca4e")>
|
| method = <selenium.webdriver.support.expected_conditions.presence_of_element_located object at 0x7f00de6b0370>
|
| message = ''
|
|
|
| def until(self, method, message=''):
|
| """Calls the method provided with the driver as an argument until the \
|
| return value is not False."""
|
| screen = None
|
| stacktrace = None
|
|
|
| end_time = time.time() + self._timeout
|
| while True:
|
| try:
|
| value = method(self._driver)
|
| if value:
|
| return value
|
| except self._ignored_exceptions as exc:
|
| screen = getattr(exc, 'screen', None)
|
| stacktrace = getattr(exc, 'stacktrace', None)
|
| time.sleep(self._poll)
|
| if time.time() > end_time:
|
| break
|
| > raise TimeoutException(message, screen, stacktrace)
|
| E selenium.common.exceptions.TimeoutException: Message:
|
|
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/support/wait.py:80: TimeoutException
|
| =============================== warnings summary ===============================
|
| ../../../../../usr/lib/python3/dist-packages/urllib3/util/selectors.py:14
|
| /usr/lib/python3/dist-packages/urllib3/util/selectors.py:14: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.10 it will stop working
|
| from collections import namedtuple, Mapping
|
|
|
| ../../../../../usr/lib/python3/dist-packages/urllib3/_collections.py:2
|
| /usr/lib/python3/dist-packages/urllib3/_collections.py:2: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3, and in 3.10 it will stop working
|
| from collections import Mapping, MutableMapping
|
|
|
| tests/ui_tests/pps_cps/pps/Other cases/test_add_prospects_to_list.py: 9 warnings
|
| tests/ui_tests/pps_cps/pps/Other cases/test_clear_filters.py: 12 warnings
|
| tests/ui_tests/pps_cps/pps/Other cases/test_pagination.py: 1 warning
|
| tests/ui_tests/pps_cps/pps/Other cases/test_remove_filters.py: 11 warnings
|
| tests/ui_tests/pps_cps/pps/Other cases/test_reset_all_filters.py: 1 warning
|
| tests/ui_tests/pps_cps/pps/Other cases/test_show_all.py: 3 warnings
|
| tests/ui_tests/pps_cps/pps/Plans/test_add_to_list_not_enough_credits.py: 3 warnings
|
| tests/ui_tests/pps_cps/pps/Plans/test_check_credits.py: 2 warnings
|
| tests/ui_tests/pps_cps/pps/Plans/test_dbs_search_no_credits.py: 2 warnings
|
| tests/ui_tests/pps_cps/pps/Plans/test_free_plan_limit.py: 1 warning
|
| tests/ui_tests/pps_cps/pps/Search/test_first_search.py: 2 warnings
|
| tests/ui_tests/pps_cps/pps/Search/test_load_search.py: 6 warnings
|
| tests/ui_tests/pps_cps/pps/Search/test_mix_search.py: 3 warnings
|
| tests/ui_tests/pps_cps/pps/Search/test_open_in_new_tab.py: 3 warnings
|
| tests/ui_tests/pps_cps/pps/Search/test_remove_search.py: 6 warnings
|
| tests/ui_tests/pps_cps/pps/Search/test_rename_search.py: 6 warnings
|
| tests/ui_tests/pps_cps/pps/Search/test_save_search.py: 18 warnings
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_company_founded.py: 1 warning
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_company_industry.py: 2 warnings
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_company_location.py: 3 warnings
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_company_name.py: 2 warnings
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_company_revenue.py: 1 warning
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_company_size.py: 1 warning
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_company_specialties.py: 2 warnings
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_prospect_job.py: 8 warnings
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_prospect_location.py: 2 warnings
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_prospect_name.py: 2 warnings
|
| tests/ui_tests/pps_cps/pps/Search/test_search_by_skills.py: 2 warnings
|
| tests/ui_tests/pps_cps/pps/Validation/test_enter_less_2_characters.py: 6 warnings
|
| tests/ui_tests/pps_cps/pps/Validation/test_limit_10_filters.py: 5 warnings
|
| tests/ui_tests/pps_cps/pps/Validation/test_not_found_data.py: 1 warning
|
| /var/lib/jenkins/workspace/pps/tests/conftest.py:27: DeprecationWarning: use options instead of chrome_options
|
| driver = webdriver.Chrome(ChromeDriverManager().install(), chrome_options=chromeOptions)
|
|
|
| -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
|
| =========================== short test summary info ============================
|
| FAILED tests/ui_tests/pps_cps/pps/Other cases/test_add_prospects_to_list.py::TestPPS::test_add_all_prospects_to_list[chrome]
|
| FAILED tests/ui_tests/pps_cps/pps/Other cases/test_add_prospects_to_list.py::TestPPS::test_create_prospects_list_error[chrome-0-List with the same name already exists.]
|
| FAILED tests/ui_tests/pps_cps/pps/Other cases/test_add_prospects_to_list.py::TestPPS::test_create_prospects_list_error[chrome--Please, put new list name]
|
| FAILED tests/ui_tests/pps_cps/pps/Other cases/test_remove_filters.py::TestPPS::test_remove_filter[chrome-Specialties-DevOps-DevOps-Select company's specialties]
|
| FAILED tests/ui_tests/pps_cps/pps/Other cases/test_show_all.py::TestPPS::test_save_recent_search[chrome]
|
| FAILED tests/ui_tests/pps_cps/pps/Plans/test_add_to_list_not_enough_credits.py::TestPPS::test_add_prospects_to_list_not_enough_credits[chrome]
|
| FAILED tests/ui_tests/pps_cps/pps/Search/test_load_search.py::TestPPS::test_load_saved_search_from_filters_panel[chrome-Job title-list_of_positions0]
|
| FAILED tests/ui_tests/pps_cps/pps/Search/test_load_search.py::TestPPS::test_load_saved_search_from_details[chrome-Job title-list_of_positions0]
|
| FAILED tests/ui_tests/pps_cps/pps/Search/test_remove_search.py::TestPPS::test_delete_search[chrome]
|
| FAILED tests/ui_tests/pps_cps/pps/Search/test_remove_search.py::TestPPS::test_delete_search_on_details[chrome]
|
| FAILED tests/ui_tests/pps_cps/pps/Search/test_rename_search.py::TestPPS::test_rename_saved_search_from_menu[chrome]
|
| FAILED tests/ui_tests/pps_cps/pps/Search/test_rename_search.py::TestPPS::test_rename_saved_search_from_details[chrome]
|
| FAILED tests/ui_tests/pps_cps/pps/Search/test_save_search.py::TestPPS::test_save_recent_search[chrome]
|
| FAILED tests/ui_tests/pps_cps/pps/Search/test_save_search.py::TestPPS::test_save_search_filter_panel[chrome]
|
| FAILED tests/ui_tests/pps_cps/pps/Search/test_save_search.py::TestPPS::test_save_search_open_details[chrome]
|
| FAILED tests/ui_tests/pps_cps/pps/Search/test_save_search.py::TestPPS::test_save_search_with_already_exist_name[chrome]
|
| FAILED tests/ui_tests/pps_cps/pps/Search/test_save_search.py::TestPPS::test_save_search_enter_spaces_and_cancel[chrome]
|
| FAILED tests/ui_tests/pps_cps/pps/Search/test_save_search.py::TestPPS::test_save_more_10_searches[chrome]
|
| ====== 18 failed, 70 passed, 129 warnings, 39 rerun in 4125.74s (1:08:45) ======
|