| ============================= 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/snov_domain_search
|
| plugins: xdist-3.0.2, rerunfailures-10.2, allure-pytest-2.8.34
|
| collecting ... collected 44 items
|
|
|
| tests/ui_tests/domain_search/Check inforamtion about companies/test_compare_count_of_prospects_tab_elastic.py::TestDomainSearch::test_compare_count_of_prospects_tab_elastic[chrome-bluebirdbio.com] PASSED
|
| tests/ui_tests/domain_search/Check inforamtion about companies/test_compare_count_of_prospects_tab_elastic.py::TestDomainSearch::test_compare_count_of_prospects_tab_elastic[chrome-apple.com] PASSED
|
| tests/ui_tests/domain_search/Check inforamtion about companies/test_compare_count_of_prospects_tab_elastic.py::TestDomainSearch::test_compare_count_of_prospects_tab_elastic[chrome-microsoft.com] PASSED
|
| tests/ui_tests/domain_search/Check inforamtion about companies/test_elastic_count_order.py::TestDomainSearch::test_elastic_count_order[chrome-none-jin.sc] PASSED
|
| tests/ui_tests/domain_search/Check inforamtion about companies/test_filter_position.py::TestDomainSearch::test_filter_position[chrome-1-20-samsung.com] RERUN
|
| tests/ui_tests/domain_search/Check inforamtion about companies/test_filter_position.py::TestDomainSearch::test_filter_position[chrome-1-20-samsung.com] RERUN
|
| tests/ui_tests/domain_search/Check inforamtion about companies/test_filter_position.py::TestDomainSearch::test_filter_position[chrome-1-20-samsung.com] FAILED
|
| tests/ui_tests/domain_search/Check inforamtion about companies/test_open_alt_domain.py::TestDomainSearch::test_open_alt_domain[chrome-samsung.com] PASSED
|
| tests/ui_tests/domain_search/Check inforamtion about companies/test_open_social.py::TestDomainSearch::test_open_social[chrome-apple.com] PASSED
|
| tests/ui_tests/domain_search/Check inforamtion about companies/test_open_website.py::TestDomainSearch::test_open_website[chrome-apple.com] PASSED
|
| tests/ui_tests/domain_search/Check inforamtion about companies/test_pagination.py::TestDomainSearch::test_pagination[chrome-samsung.com] PASSED
|
| tests/ui_tests/domain_search/Check inforamtion about companies/test_tech_tab.py::TestDomainSearch::test_tech_tab[chrome-PHP-sendpulse.com] PASSED
|
| tests/ui_tests/domain_search/Other cases/test_cant_find_status_hidden_email.py::TestDomainSearch::test_cant_find_status_hidden_email[chrome-1-1-kiofarm.com-Manoj Kumar-Can't find emails] PASSED
|
| tests/ui_tests/domain_search/Other cases/test_check_redits.py::TestDomainSearch::test_check_credits[chrome-20-20-preprod_urls.txt] PASSED
|
| tests/ui_tests/domain_search/Other cases/test_free_show_more.py::TestDomainSearch::test_free_plan_see_plans[chrome] PASSED
|
| tests/ui_tests/domain_search/Other cases/test_link_bds.py::TestDomainSearch::test_link_bds[chrome] PASSED
|
| tests/ui_tests/domain_search/Other cases/test_no_results.py::TestDomainSearch::test_no_results[chrome] PASSED
|
| tests/ui_tests/domain_search/Other cases/test_none_checkbox.py::TestDomainSearch::test_none_checkbox[chrome-none-samsung.com] PASSED
|
| tests/ui_tests/domain_search/Other cases/test_placeholder.py::TestDomainSearch::test_placeholder[chrome-Sell to big companies by finding just the employee you need] PASSED
|
| tests/ui_tests/domain_search/Other cases/test_search_enter_button.py::TestDomainSearch::test_2757[chrome-samsung.com] PASSED
|
| tests/ui_tests/domain_search/Other cases/test_search_hide_prospect.py::TestDomainSearch::test_search_hide_prospect[chrome-10-sun.run-Steven Robinson-Melissa Bannister] PASSED
|
| tests/ui_tests/domain_search/Other cases/test_search_incorrect_info.py::TestDomainSearch::test_search_incorrect_info[chrome-drththth] PASSED
|
| tests/ui_tests/domain_search/Other cases/test_search_less_3_symbols.py::TestDomainSearch::test_search_less_3_symbols[chrome-bl] PASSED
|
| tests/ui_tests/domain_search/Other cases/test_search_less_3_symbols.py::TestDomainSearch::test_search_less_3_symbols[chrome-] PASSED
|
| tests/ui_tests/domain_search/Other cases/test_search_less_3_symbols.py::TestDomainSearch::test_search_less_3_symbols[chrome-m] PASSED
|
| tests/ui_tests/domain_search/Other cases/test_video_tutorial.py::TestDomainSearch::test_video_tutorial[chrome] PASSED
|
| tests/ui_tests/domain_search/Search and add to list/test_add_all_emails_on_page.py::TestDomainSearch::test_add_all_email_on_page[chrome-50-50-samsung.com] RERUN
|
| tests/ui_tests/domain_search/Search and add to list/test_add_all_emails_on_page.py::TestDomainSearch::test_add_all_email_on_page[chrome-50-50-samsung.com] RERUN
|
| tests/ui_tests/domain_search/Search and add to list/test_add_all_emails_on_page.py::TestDomainSearch::test_add_all_email_on_page[chrome-50-50-samsung.com] FAILED
|
| tests/ui_tests/domain_search/Search and add to list/test_add_all_generic_to_list.py::TestDomainSearch::test_add_all_generic_to_list[chrome-13-13-apple.com] RERUN
|
| tests/ui_tests/domain_search/Search and add to list/test_add_all_generic_to_list.py::TestDomainSearch::test_add_all_generic_to_list[chrome-13-13-apple.com] RERUN
|
| tests/ui_tests/domain_search/Search and add to list/test_add_all_generic_to_list.py::TestDomainSearch::test_add_all_generic_to_list[chrome-13-13-apple.com] FAILED
|
| tests/ui_tests/domain_search/Search and add to list/test_add_all_on_page_prospects.py::TestDomainSearch::test_add_all_on_page_prospects[chrome-20-20-samsung.com] RERUN
|
| tests/ui_tests/domain_search/Search and add to list/test_add_all_on_page_prospects.py::TestDomainSearch::test_add_all_on_page_prospects[chrome-20-20-samsung.com] RERUN
|
| tests/ui_tests/domain_search/Search and add to list/test_add_all_on_page_prospects.py::TestDomainSearch::test_add_all_on_page_prospects[chrome-20-20-samsung.com] FAILED
|
| tests/ui_tests/domain_search/Search and add to list/test_add_all_prospects_on_page.py::TestDomainSearch::test_add_all_on_page_prospects[chrome-20-20-samsung.com] PASSED
|
| tests/ui_tests/domain_search/Search and add to list/test_add_company.py::TestDomainSearch::test_add_company_to_list[chrome-0-samsung.com] PASSED
|
| tests/ui_tests/domain_search/Search and add to list/test_add_one_email.py::TestDomainSearch::test_add_one_email[chrome-10-20-samsung.com] RERUN
|
| tests/ui_tests/domain_search/Search and add to list/test_add_one_email.py::TestDomainSearch::test_add_one_email[chrome-10-20-samsung.com] RERUN
|
| tests/ui_tests/domain_search/Search and add to list/test_add_one_email.py::TestDomainSearch::test_add_one_email[chrome-10-20-samsung.com] FAILED
|
| tests/ui_tests/domain_search/Search and add to list/test_add_one_generic.py::TestDomainSearch::test_add_one_generic_email[chrome-13-13-samsung.com] RERUN
|
| tests/ui_tests/domain_search/Search and add to list/test_add_one_generic.py::TestDomainSearch::test_add_one_generic_email[chrome-13-13-samsung.com] RERUN
|
| tests/ui_tests/domain_search/Search and add to list/test_add_one_generic.py::TestDomainSearch::test_add_one_generic_email[chrome-13-13-samsung.com] FAILED
|
| tests/ui_tests/domain_search/Search and add to list/test_add_one_prospect.py::TestDomainSearch::test_add_one_prospect[chrome-10-20-samsung.com] PASSED
|
| tests/ui_tests/domain_search/Search and add to list/test_create_company_list_already_exist.py::TestDomainSearch::test_add_create_company_list_already_exist[chrome-0-samsung.com-List with the same name already exists.-Companies List] PASSED
|
| tests/ui_tests/domain_search/Search and add to list/test_create_list_incorrect_name.py::TestDomainSearch::test_create_list_incorrect_name[chrome-samsung.com--Please, put new list name] PASSED
|
| tests/ui_tests/domain_search/Search and add to list/test_create_list_incorrect_name.py::TestDomainSearch::test_create_list_incorrect_name[chrome-samsung.com-New Prospects List-List with the same name already exists.] PASSED
|
| tests/ui_tests/domain_search/Search and add to list/test_search_different_domains.py::TestDomainSearch::test_by_different_domains[chrome-bluebirdbio.com-Cambridge-40-10-1-0-www.bluebirdbio.com-Biotechnology-1-10] PASSED
|
| tests/ui_tests/domain_search/Search and add to list/test_search_different_domains.py::TestDomainSearch::test_by_different_domains[chrome-apple.com-Cupertino-2000-3000-10-1-www.apple.com-Consumer Electronics-10001+] RERUN
|
| tests/ui_tests/domain_search/Search and add to list/test_search_different_domains.py::TestDomainSearch::test_by_different_domains[chrome-apple.com-Cupertino-2000-3000-10-1-www.apple.com-Consumer Electronics-10001+] RERUN
|
| tests/ui_tests/domain_search/Search and add to list/test_search_different_domains.py::TestDomainSearch::test_by_different_domains[chrome-apple.com-Cupertino-2000-3000-10-1-www.apple.com-Consumer Electronics-10001+] FAILED
|
| tests/ui_tests/domain_search/Search and add to list/test_search_different_domains.py::TestDomainSearch::test_by_different_domains[chrome-microsoft.com-Redmond-400-1000-0-1-news.microsoft.com-Computer Software-10001+] RERUN
|
| tests/ui_tests/domain_search/Search and add to list/test_search_different_domains.py::TestDomainSearch::test_by_different_domains[chrome-microsoft.com-Redmond-400-1000-0-1-news.microsoft.com-Computer Software-10001+] RERUN
|
| tests/ui_tests/domain_search/Search and add to list/test_search_different_domains.py::TestDomainSearch::test_by_different_domains[chrome-microsoft.com-Redmond-400-1000-0-1-news.microsoft.com-Computer Software-10001+] FAILED
|
| tests/ui_tests/domain_search/Search and add to list/test_search_snovio.py::TestDomainSearch::test_company_emails[chrome-10-20-dell.com] PASSED
|
| tests/ui_tests/domain_search/Search and add to list/test_show_more_add_emails.py::TestDomainSearch::test_show_more_add_emails[chrome-vw.com.br-100] RERUN
|
| tests/ui_tests/domain_search/Search and add to list/test_show_more_add_emails.py::TestDomainSearch::test_show_more_add_emails[chrome-vw.com.br-100] RERUN
|
| tests/ui_tests/domain_search/Search and add to list/test_show_more_add_emails.py::TestDomainSearch::test_show_more_add_emails[chrome-vw.com.br-100] FAILED
|
| tests/ui_tests/domain_search/Team work and credits/test_no_credits.py::TestDomainSearch::test_no_credits[chrome-apple.com-Low balance-rk-12-12-2021-1@snov.io] RERUN
|
| tests/ui_tests/domain_search/Team work and credits/test_no_credits.py::TestDomainSearch::test_no_credits[chrome-apple.com-Low balance-rk-12-12-2021-1@snov.io] RERUN
|
| tests/ui_tests/domain_search/Team work and credits/test_no_credits.py::TestDomainSearch::test_no_credits[chrome-apple.com-Low balance-rk-12-12-2021-1@snov.io] FAILED
|
| tests/ui_tests/domain_search/Team work and credits/test_no_credits.py::TestDomainSearch::test_no_credits[chrome-apple.com-Low balance-rk-00-00-2022-01@snov.io] RERUN
|
| tests/ui_tests/domain_search/Team work and credits/test_no_credits.py::TestDomainSearch::test_no_credits[chrome-apple.com-Low balance-rk-00-00-2022-01@snov.io] RERUN
|
| tests/ui_tests/domain_search/Team work and credits/test_no_credits.py::TestDomainSearch::test_no_credits[chrome-apple.com-Low balance-rk-00-00-2022-01@snov.io] FAILED
|
| tests/ui_tests/domain_search/Team work and credits/test_team_lead_search.py::TestDomainSearch::test_team_lead_search[chrome] PASSED
|
| tests/ui_tests/domain_search/Team work and credits/test_team_member_search.py::TestDomainSearch::test_team_member_search[chrome-samsung.com] PASSED
|
|
|
| =================================== FAILURES ===================================
|
| ________ TestDomainSearch.test_filter_position[chrome-1-20-samsung.com] ________
|
|
|
| self = <test_filter_position.TestDomainSearch object at 0x7fbfe0088310>
|
| count_of_position = 1, table_rows_count = 20, domain = 'samsung.com'
|
|
|
| @pytest.mark.parametrize('count_of_position, table_rows_count, domain', [
|
| (
|
| TestDataDS.COUNT_ONE,
|
| TestDataDS.COUNT_TWENTY,
|
| TestDataDS.DOMAIN_SAMSUNG
|
| ),
|
| ])
|
| @allure.title("Filter by position")
|
| @allure.severity(Severity.BLOCKER)
|
| def test_filter_position(self, count_of_position, table_rows_count, domain):
|
| """C2756"""
|
| self.domain_search_page = DomainSearch(self.driver)
|
| self.domain_search_page.login_and_open_domain_page(TestDataDS.USER_GENERAL_US, TestDataGeneral.PASSWORD_GENERAL)
|
| self.domain_search_page.enter_domain_elastic(domain)
|
| self.domain_search_page.click_search_button_and_wait_results()
|
| assert len(self.domain_search_page.prospect_positions_list()) == table_rows_count, \
|
| 'incorrect prospects count on page'
|
| position = self.domain_search_page.enter_filter_position(count_of_position)
|
| time.sleep(3)
|
| self.domain_search_page.click_search_position_button()
|
| position_after_search = self.domain_search_page.prospect_positions_list()
|
| for i in position_after_search:
|
| > assert position in i, 'position is not correct'
|
| E AssertionError: position is not correct
|
| E assert 'Product Marketing Manager B2B' in 'Trade Marketing Manager'
|
|
|
| tests/ui_tests/domain_search/Check inforamtion about companies/test_filter_position.py:34: AssertionError
|
| ____ TestDomainSearch.test_add_all_email_on_page[chrome-50-50-samsung.com] _____
|
|
|
| self = <test_add_all_emails_on_page.TestDomainSearch object at 0x7fbfdbfebe80>
|
| selected_checkboxes = '50', table_rows_count = 50, domain = 'samsung.com'
|
|
|
| @pytest.mark.parametrize('selected_checkboxes, table_rows_count, domain', [
|
| (
|
| '50',
|
| 50,
|
| TestDataDS.DOMAIN_SAMSUNG
|
| ),
|
| ])
|
| @allure.title("Add all emails on page to list")
|
| @allure.severity(Severity.BLOCKER)
|
| def test_add_all_email_on_page(self, selected_checkboxes, table_rows_count, domain):
|
| """C2740"""
|
| self.domain_search_page = DomainSearch(self.driver)
|
| self.prospects_page = ProspectsPage(self.driver)
|
| list_name = self.domain_search_page.random_list_name()
|
| self.domain_search_page.login_and_open_domain_page(TestDataDS.USER_GENERAL_US, TestDataGeneral.PASSWORD_GENERAL)
|
| self.domain_search_page.enter_domain_elastic(domain)
|
| self.domain_search_page.click_search_button_and_wait_results()
|
| self.domain_search_page.click_all_domains_emails_tab()
|
| self.domain_search_page.click_general_ckeckbox(selected_checkboxes)
|
| > self.domain_search_page.add_email_to_list(list_name)
|
|
|
| tests/ui_tests/domain_search/Search and add to list/test_add_all_emails_on_page.py:31:
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
| tests/scr/pages/domain_search_page.py:310: in add_email_to_list
|
| self.wait_element(self.ADD_TO_LIST_EMAIL_CONFIRM_MESSAGE, self.TG.D_10)
|
| 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="954b4861fc777529383e7eb16b462928")>
|
| method = <selenium.webdriver.support.expected_conditions.presence_of_element_located object at 0x7fbfdb8bb520>
|
| 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
|
| ____ TestDomainSearch.test_add_all_generic_to_list[chrome-13-13-apple.com] _____
|
|
|
| self = <test_add_all_generic_to_list.TestDomainSearch object at 0x7fbfdbff3520>
|
| selected_checkboxes = '13', table_rows_count = 13, domain = 'apple.com'
|
|
|
| @pytest.mark.parametrize('selected_checkboxes, table_rows_count, domain', [
|
| (
|
| '13',
|
| 13,
|
| TestDataDS.DOMAIN_APPLE
|
| ),
|
| ])
|
| @allure.title("Add all generic to list")
|
| @allure.severity(Severity.BLOCKER)
|
| def test_add_all_generic_to_list(self, selected_checkboxes, table_rows_count, domain):
|
| """C2751"""
|
| self.domain_search_page = DomainSearch(self.driver)
|
| self.prospects_page = ProspectsPage(self.driver)
|
| self.domain_search_page.login_and_open_domain_page(TestDataDS.USER_GENERAL_US, TestDataGeneral.PASSWORD_GENERAL)
|
| list_name = self.domain_search_page.random_list_name()
|
| self.domain_search_page.enter_domain_elastic(domain)
|
| self.domain_search_page.click_search_button_and_wait_results()
|
| self.domain_search_page.click_generic_contacts()
|
| self.domain_search_page.click_general_ckeckbox(selected_checkboxes)
|
| > self.domain_search_page.add_email_to_list(list_name)
|
|
|
| tests/ui_tests/domain_search/Search and add to list/test_add_all_generic_to_list.py:31:
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
| tests/scr/pages/domain_search_page.py:310: in add_email_to_list
|
| self.wait_element(self.ADD_TO_LIST_EMAIL_CONFIRM_MESSAGE, self.TG.D_10)
|
| 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="a36fca7ee700910934dbdcd0b0b21ef0")>
|
| method = <selenium.webdriver.support.expected_conditions.presence_of_element_located object at 0x7fbfdb879670>
|
| 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
|
| __ TestDomainSearch.test_add_all_on_page_prospects[chrome-20-20-samsung.com] ___
|
|
|
| self = <test_add_all_on_page_prospects.TestDomainSearch object at 0x7fbfdbfe3ca0>
|
| selected_checkboxes = 20, table_rows_count = 20, domain = 'samsung.com'
|
|
|
| @pytest.mark.parametrize('selected_checkboxes, table_rows_count, domain', [
|
| (
|
| TestDataDS.COUNT_TWENTY,
|
| TestDataDS.COUNT_TWENTY,
|
| TestDataDS.DOMAIN_SAMSUNG
|
| ),
|
| ])
|
| @allure.title("Add all on page prospects")
|
| @allure.severity(Severity.BLOCKER)
|
| def test_add_all_on_page_prospects(self, selected_checkboxes, table_rows_count, domain):
|
| """C2752"""
|
| self.domain_search_page = DomainSearch(self.driver)
|
| self.prospects_page = ProspectsPage(self.driver)
|
| self.domain_search_page.login_and_open_domain_page(TestDataDS.USER_GENERAL_US, TestDataGeneral.PASSWORD_GENERAL)
|
| list_name = self.domain_search_page.random_list_name()
|
| self.domain_search_page.enter_domain_elastic('instagram.com')
|
| self.domain_search_page.click_search_button_and_wait_results()
|
| self.domain_search_page.scroll_to_table()
|
| > self.domain_search_page.click_dropdown_checkbox("all_on_page")
|
|
|
| tests/ui_tests/domain_search/Search and add to list/test_add_all_on_page_prospects.py:30:
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
| tests/scr/pages/domain_search_page.py:418: in click_dropdown_checkbox
|
| self.do_click(self.CHECKBOX_DROPDOWN)
|
| tests/scr/pages/base_page.py:15: in do_click
|
| WebDriverWait(self.driver, 20).until(EC.visibility_of_element_located(by_locator)).click()
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/remote/webelement.py:80: in click
|
| self._execute(Command.CLICK_ELEMENT)
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/remote/webelement.py:633: in _execute
|
| return self._parent.execute(command, params)
|
| /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 0x7fbfdb6a40d0>
|
| response = {'status': 400, 'value': '{"value":{"error":"element click intercepted","message":"element click intercepted: Element ...wn>\\n#20 0x5637779e3847 \\u003Cunknown>\\n#21 0x5637779f3243 \\u003Cunknown>\\n#22 0x7f3db78976db 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.ElementClickInterceptedException: Message: element click intercepted: Element <img data-v-44b55cd2="" src="https://cdn-app-stage.snov.io/dist/generatedImg/design-icons/arrow_small_edit.svg?c2d1a980" alt=""> is not clickable at point (625, 42). Other element would receive the click: <span class="snovHeader__link-text">...</span>
|
| E (Session info: headless chrome=114.0.5735.133)
|
|
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/remote/errorhandler.py:242: ElementClickInterceptedException
|
| ________ TestDomainSearch.test_add_one_email[chrome-10-20-samsung.com] _________
|
|
|
| self = <test_add_one_email.TestDomainSearch object at 0x7fbfdbf85190>
|
| count_elastic_companies = 10, table_rows_count = 20, domain = 'samsung.com'
|
|
|
| @pytest.mark.parametrize('count_elastic_companies, table_rows_count, domain', [
|
| (
|
| TestDataDS.COUNT_TEN,
|
| TestDataDS.COUNT_TWENTY,
|
| TestDataDS.DOMAIN_SAMSUNG
|
| ),
|
| ])
|
| @allure.title("Add 1 email to list")
|
| @allure.severity(Severity.BLOCKER)
|
| def test_add_one_email(self, count_elastic_companies, table_rows_count, domain):
|
| """C2739"""
|
| self.domain_search_page = DomainSearch(self.driver)
|
| self.prospects_page = ProspectsPage(self.driver)
|
| list_name = self.domain_search_page.random_list_name()
|
| self.domain_search_page.login_and_open_domain_page(TestDataDS.USER_GENERAL_US, TestDataGeneral.PASSWORD_GENERAL)
|
| self.domain_search_page.enter_domain_elastic(domain)
|
| self.domain_search_page.click_search_button_and_wait_results()
|
| self.domain_search_page.click_all_domains_emails_tab()
|
| emails_from_domain_search_page = self.domain_search_page.get_prospect_emails_list(TestDataDS.TYPE_E)
|
| self.domain_search_page.click_first_ckeckbox_prospect()
|
| > self.domain_search_page.add_email_to_list(list_name)
|
|
|
| tests/ui_tests/domain_search/Search and add to list/test_add_one_email.py:32:
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
| tests/scr/pages/domain_search_page.py:310: in add_email_to_list
|
| self.wait_element(self.ADD_TO_LIST_EMAIL_CONFIRM_MESSAGE, self.TG.D_10)
|
| 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="fe86c1733f2501c30f108b8d8b538668")>
|
| method = <selenium.webdriver.support.expected_conditions.presence_of_element_located object at 0x7fbfdb802070>
|
| 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
|
| ____ TestDomainSearch.test_add_one_generic_email[chrome-13-13-samsung.com] _____
|
|
|
| self = <test_add_one_generic.TestDomainSearch object at 0x7fbfdbf858b0>
|
| selected_checkboxes = '13', table_rows_count = 13, domain = 'samsung.com'
|
|
|
| @pytest.mark.parametrize('selected_checkboxes, table_rows_count, domain', [
|
| (
|
| '13',
|
| 13,
|
| TestDataDS.DOMAIN_SAMSUNG
|
| ),
|
| ])
|
| @allure.title("Add 1 generic email to list")
|
| @allure.severity(Severity.BLOCKER)
|
| def test_add_one_generic_email(self, selected_checkboxes, table_rows_count, domain):
|
| """C2750"""
|
| self.domain_search_page = DomainSearch(self.driver)
|
| self.prospects_page = ProspectsPage(self.driver)
|
| self.domain_search_page.login_and_open_domain_page(TestDataDS.USER_GENERAL_US, TestDataGeneral.PASSWORD_GENERAL)
|
| list_name = self.domain_search_page.random_list_name()
|
| self.domain_search_page.enter_domain_elastic(domain)
|
| self.domain_search_page.click_search_button_and_wait_results()
|
| self.domain_search_page.click_generic_contacts()
|
| emails_from_domain_search_page = self.domain_search_page.get_prospect_emails_list(TestDataDS.TYPE_E)
|
| self.domain_search_page.click_first_ckeckbox_prospect()
|
| > self.domain_search_page.add_email_to_list(list_name)
|
|
|
| tests/ui_tests/domain_search/Search and add to list/test_add_one_generic.py:34:
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
| tests/scr/pages/domain_search_page.py:310: in add_email_to_list
|
| self.wait_element(self.ADD_TO_LIST_EMAIL_CONFIRM_MESSAGE, self.TG.D_10)
|
| 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="c4dce5268270b528d79dd2de4c69bafd")>
|
| method = <selenium.webdriver.support.expected_conditions.presence_of_element_located object at 0x7fbfdb6d6cd0>
|
| 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
|
| _ TestDomainSearch.test_by_different_domains[chrome-apple.com-Cupertino-2000-3000-10-1-www.apple.com-Consumer Electronics-10001+] _
|
|
|
| self = <test_search_different_domains.TestDomainSearch object at 0x7fbfdbf9d4f0>
|
| domain = 'apple.com', city = 'Cupertino', prospects_count = 2000
|
| all_email_count = 3000, generic_count = 10, technologies_count = 1
|
| website = 'www.apple.com', industry = 'Consumer Electronics', size = '10001+'
|
|
|
| @pytest.mark.parametrize('domain, city, '
|
| 'prospects_count, '
|
| 'all_email_count, '
|
| 'generic_count, '
|
| 'technologies_count, '
|
| 'website, industry, '
|
| 'size',
|
| [
|
| (
|
| 'bluebirdbio.com',
|
| 'Cambridge',
|
| 40,
|
| TestDataDS.COUNT_TEN,
|
| TestDataDS.COUNT_ONE,
|
| TestDataDS.COUNT_ZERO,
|
| 'www.bluebirdbio.com',
|
| 'Biotechnology',
|
| '1-10'
|
| ),
|
| (
|
| TestDataDS.DOMAIN_APPLE,
|
| 'Cupertino',
|
| 2000,
|
| 3000,
|
| TestDataDS.COUNT_TEN,
|
| 1,
|
| 'www.apple.com',
|
| 'Consumer Electronics',
|
| '10001+'
|
| ),
|
| (
|
| 'microsoft.com',
|
| 'Redmond',
|
| 400,
|
| 1000,
|
| TestDataDS.COUNT_ZERO,
|
| 1,
|
| 'news.microsoft.com',
|
| 'Computer Software',
|
| '10001+'
|
| ),
|
| ])
|
| @allure.title("Search companies by domain")
|
| @allure.severity(Severity.BLOCKER)
|
| def test_by_different_domains(self,
|
| domain,
|
| city,
|
| prospects_count,
|
| all_email_count,
|
| generic_count,
|
| technologies_count,
|
| website,
|
| industry,
|
| size):
|
| """C2743"""
|
| self.domain_search_page = DomainSearch(self.driver)
|
| self.domain_search_page.login_and_open_domain_page(TestDataDS.USER_GENERAL_US, TestDataGeneral.PASSWORD_GENERAL)
|
| self.domain_search_page.enter_domain_elastic(domain)
|
| self.domain_search_page.click_search_button_and_wait_results()
|
| > assert self.domain_search_page.get_city() == city
|
|
|
| tests/ui_tests/domain_search/Search and add to list/test_search_different_domains.py:70:
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
| tests/scr/pages/domain_search_page.py:347: in get_city
|
| return self.get_element_text(self.CITY)
|
| tests/scr/pages/base_page.py:42: in get_element_text
|
| element = WebDriverWait(self.driver, 10).until(EC.visibility_of_element_located(by_locator))
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
| self = <selenium.webdriver.support.wait.WebDriverWait (session="daf3afb44763bbb7851e30914172c1fb")>
|
| method = <selenium.webdriver.support.expected_conditions.visibility_of_element_located object at 0x7fbfdb802bb0>
|
| 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
|
| _ TestDomainSearch.test_by_different_domains[chrome-microsoft.com-Redmond-400-1000-0-1-news.microsoft.com-Computer Software-10001+] _
|
|
|
| self = <test_search_different_domains.TestDomainSearch object at 0x7fbfdbf9d580>
|
| domain = 'microsoft.com', city = 'Redmond', prospects_count = 400
|
| all_email_count = 1000, generic_count = 0, technologies_count = 1
|
| website = 'news.microsoft.com', industry = 'Computer Software', size = '10001+'
|
|
|
| @pytest.mark.parametrize('domain, city, '
|
| 'prospects_count, '
|
| 'all_email_count, '
|
| 'generic_count, '
|
| 'technologies_count, '
|
| 'website, industry, '
|
| 'size',
|
| [
|
| (
|
| 'bluebirdbio.com',
|
| 'Cambridge',
|
| 40,
|
| TestDataDS.COUNT_TEN,
|
| TestDataDS.COUNT_ONE,
|
| TestDataDS.COUNT_ZERO,
|
| 'www.bluebirdbio.com',
|
| 'Biotechnology',
|
| '1-10'
|
| ),
|
| (
|
| TestDataDS.DOMAIN_APPLE,
|
| 'Cupertino',
|
| 2000,
|
| 3000,
|
| TestDataDS.COUNT_TEN,
|
| 1,
|
| 'www.apple.com',
|
| 'Consumer Electronics',
|
| '10001+'
|
| ),
|
| (
|
| 'microsoft.com',
|
| 'Redmond',
|
| 400,
|
| 1000,
|
| TestDataDS.COUNT_ZERO,
|
| 1,
|
| 'news.microsoft.com',
|
| 'Computer Software',
|
| '10001+'
|
| ),
|
| ])
|
| @allure.title("Search companies by domain")
|
| @allure.severity(Severity.BLOCKER)
|
| def test_by_different_domains(self,
|
| domain,
|
| city,
|
| prospects_count,
|
| all_email_count,
|
| generic_count,
|
| technologies_count,
|
| website,
|
| industry,
|
| size):
|
| """C2743"""
|
| self.domain_search_page = DomainSearch(self.driver)
|
| self.domain_search_page.login_and_open_domain_page(TestDataDS.USER_GENERAL_US, TestDataGeneral.PASSWORD_GENERAL)
|
| self.domain_search_page.enter_domain_elastic(domain)
|
| self.domain_search_page.click_search_button_and_wait_results()
|
| > assert self.domain_search_page.get_city() == city
|
|
|
| tests/ui_tests/domain_search/Search and add to list/test_search_different_domains.py:70:
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
| tests/scr/pages/domain_search_page.py:347: in get_city
|
| return self.get_element_text(self.CITY)
|
| tests/scr/pages/base_page.py:42: in get_element_text
|
| element = WebDriverWait(self.driver, 10).until(EC.visibility_of_element_located(by_locator))
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
| self = <selenium.webdriver.support.wait.WebDriverWait (session="321bf32868e0cb4842fea73fc0d76b61")>
|
| method = <selenium.webdriver.support.expected_conditions.visibility_of_element_located object at 0x7fbfdb882490>
|
| 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
|
| _______ TestDomainSearch.test_show_more_add_emails[chrome-vw.com.br-100] _______
|
|
|
| self = <test_show_more_add_emails.TestDomainSearch object at 0x7fbfdbf91f10>
|
| domain = 'vw.com.br', count_emails = 100
|
|
|
| @pytest.mark.parametrize('domain, count_emails', [
|
| (
|
| TestDataDS.DOMAIN_EMAILS,
|
| TestDataDS.COUNT_100
|
| ),
|
| ])
|
| @allure.title("Show more")
|
| @allure.severity(Severity.BLOCKER)
|
| def test_show_more_add_emails(self, domain, count_emails):
|
| """C"""
|
| self.domain_search_page = DomainSearch(self.driver)
|
| self.prospects_page = ProspectsPage(self.driver)
|
| list_name = self.domain_search_page.random_list_name()
|
| self.domain_search_page.login_and_open_domain_page(TestDataDS.USER_GENERAL_US, TestDataGeneral.PASSWORD_GENERAL)
|
| self.domain_search_page.enter_domain_elastic(domain)
|
| self.domain_search_page.click_search_button_and_wait_results()
|
| self.domain_search_page.click_all_domains_emails_tab()
|
| self.domain_search_page.click_show_more()
|
| emails_from_domain_search_page = self.domain_search_page.get_prospect_emails_list(TestDataDS.TYPE_E)
|
| set_emails_list = set(emails_from_domain_search_page)
|
| if len(emails_from_domain_search_page) != len(set_emails_list):
|
| raise Exception('emails are dublicated')
|
| assert len(emails_from_domain_search_page) == count_emails
|
| > self.domain_search_page.click_general_ckeckbox(str(count_emails))
|
|
|
| tests/ui_tests/domain_search/Search and add to list/test_show_more_add_emails.py:37:
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
| tests/scr/pages/domain_search_page.py:336: in click_general_ckeckbox
|
| 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()
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/remote/webelement.py:80: in click
|
| self._execute(Command.CLICK_ELEMENT)
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/remote/webelement.py:633: in _execute
|
| return self._parent.execute(command, params)
|
| /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 0x7fbfdb5a5b50>
|
| response = {'status': 400, 'value': '{"value":{"error":"element click intercepted","message":"element click intercepted: Element ...wn>\\n#20 0x55d9d547b847 \\u003Cunknown>\\n#21 0x55d9d548b243 \\u003Cunknown>\\n#22 0x7fedb22856db 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.ElementClickInterceptedException: Message: element click intercepted: Element <div data-v-44b55cd2="" class="first-row__checkbox checkbox-div">...</div> is not clickable at point (604, 20). Other element would receive the click: <a href="https://preprod.snov.io/deliverability/#/check" class="snovHeader__link " data-route-name="testList" data-route-domain="/deliverability" data-onboarding-feature-id="14" '="" data-snov-menu-link="" tabindex="1">...</a>
|
| E (Session info: headless chrome=114.0.5735.133)
|
|
|
| /usr/local/lib/python3.9/dist-packages/selenium/webdriver/remote/errorhandler.py:242: ElementClickInterceptedException
|
| _ TestDomainSearch.test_no_credits[chrome-apple.com-Low balance-rk-12-12-2021-1@snov.io] _
|
|
|
| self = <test_no_credits.TestDomainSearch object at 0x7fbfdbfa89d0>
|
| domain = 'apple.com', error = 'Low balance', user = 'rk-12-12-2021-1@snov.io'
|
|
|
| @pytest.mark.parametrize('domain, error, user', [
|
| (
|
| TestDataDS.DOMAIN_APPLE,
|
| TestDataDS.NO_BALANCE,
|
| TestDataDS.USER_PAID_NO_CREDITS
|
| ),
|
| (
|
| TestDataDS.DOMAIN_APPLE,
|
| TestDataDS.NO_BALANCE,
|
| TestDataDS.USER_XS_PLAN
|
| ),
|
| ])
|
| @allure.title("No credits -> snovio alert -> link to pricing plans")
|
| @allure.severity(Severity.BLOCKER)
|
| def test_no_credits(self, domain, error, user):
|
| """C2823, C2818, C2821, C2920"""
|
| self.domain_search_page = DomainSearch(self.driver)
|
| self.b = BasePage(self.driver)
|
| self.domain_search_page.login_and_open_domain_page(user, TestDataGeneral.PASSWORD_GENERAL_NEW)
|
| self.domain_search_page.enter_domain_elastic(domain)
|
| self.domain_search_page.click_search()
|
| > self.domain_search_page.check_blur_company_info()
|
|
|
| tests/ui_tests/domain_search/Team work and credits/test_no_credits.py:33:
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
| tests/scr/pages/domain_search_page.py:566: in check_blur_company_info
|
| company_info = "{}{}{}{}{}{}".format(self.get_city(), self.get_founded(), self.get_industry(), self.get_size(),
|
| tests/scr/pages/domain_search_page.py:347: in get_city
|
| return self.get_element_text(self.CITY)
|
| tests/scr/pages/base_page.py:42: in get_element_text
|
| element = WebDriverWait(self.driver, 10).until(EC.visibility_of_element_located(by_locator))
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
| self = <selenium.webdriver.support.wait.WebDriverWait (session="b285b3b11ef7b9d87359400d7ebdddc0")>
|
| method = <selenium.webdriver.support.expected_conditions.visibility_of_element_located object at 0x7fbfdb802880>
|
| 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
|
| _ TestDomainSearch.test_no_credits[chrome-apple.com-Low balance-rk-00-00-2022-01@snov.io] _
|
|
|
| self = <test_no_credits.TestDomainSearch object at 0x7fbfdbfa8a60>
|
| domain = 'apple.com', error = 'Low balance', user = 'rk-00-00-2022-01@snov.io'
|
|
|
| @pytest.mark.parametrize('domain, error, user', [
|
| (
|
| TestDataDS.DOMAIN_APPLE,
|
| TestDataDS.NO_BALANCE,
|
| TestDataDS.USER_PAID_NO_CREDITS
|
| ),
|
| (
|
| TestDataDS.DOMAIN_APPLE,
|
| TestDataDS.NO_BALANCE,
|
| TestDataDS.USER_XS_PLAN
|
| ),
|
| ])
|
| @allure.title("No credits -> snovio alert -> link to pricing plans")
|
| @allure.severity(Severity.BLOCKER)
|
| def test_no_credits(self, domain, error, user):
|
| """C2823, C2818, C2821, C2920"""
|
| self.domain_search_page = DomainSearch(self.driver)
|
| self.b = BasePage(self.driver)
|
| self.domain_search_page.login_and_open_domain_page(user, TestDataGeneral.PASSWORD_GENERAL_NEW)
|
| self.domain_search_page.enter_domain_elastic(domain)
|
| self.domain_search_page.click_search()
|
| > self.domain_search_page.check_blur_company_info()
|
|
|
| tests/ui_tests/domain_search/Team work and credits/test_no_credits.py:33:
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
| tests/scr/pages/domain_search_page.py:566: in check_blur_company_info
|
| company_info = "{}{}{}{}{}{}".format(self.get_city(), self.get_founded(), self.get_industry(), self.get_size(),
|
| tests/scr/pages/domain_search_page.py:347: in get_city
|
| return self.get_element_text(self.CITY)
|
| tests/scr/pages/base_page.py:42: in get_element_text
|
| element = WebDriverWait(self.driver, 10).until(EC.visibility_of_element_located(by_locator))
|
| _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|
|
|
| self = <selenium.webdriver.support.wait.WebDriverWait (session="f36aa0c3837bccf87edb836bcc629d74")>
|
| method = <selenium.webdriver.support.expected_conditions.visibility_of_element_located object at 0x7fbfdb874520>
|
| 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/domain_search/Check inforamtion about companies/test_compare_count_of_prospects_tab_elastic.py: 3 warnings
|
| tests/ui_tests/domain_search/Check inforamtion about companies/test_elastic_count_order.py: 1 warning
|
| tests/ui_tests/domain_search/Check inforamtion about companies/test_filter_position.py: 3 warnings
|
| tests/ui_tests/domain_search/Check inforamtion about companies/test_open_alt_domain.py: 1 warning
|
| tests/ui_tests/domain_search/Check inforamtion about companies/test_open_social.py: 1 warning
|
| tests/ui_tests/domain_search/Check inforamtion about companies/test_open_website.py: 1 warning
|
| tests/ui_tests/domain_search/Check inforamtion about companies/test_pagination.py: 1 warning
|
| tests/ui_tests/domain_search/Check inforamtion about companies/test_tech_tab.py: 1 warning
|
| tests/ui_tests/domain_search/Other cases/test_cant_find_status_hidden_email.py: 1 warning
|
| tests/ui_tests/domain_search/Other cases/test_check_redits.py: 1 warning
|
| tests/ui_tests/domain_search/Other cases/test_free_show_more.py: 1 warning
|
| tests/ui_tests/domain_search/Other cases/test_link_bds.py: 1 warning
|
| tests/ui_tests/domain_search/Other cases/test_no_results.py: 1 warning
|
| tests/ui_tests/domain_search/Other cases/test_none_checkbox.py: 1 warning
|
| tests/ui_tests/domain_search/Other cases/test_placeholder.py: 1 warning
|
| tests/ui_tests/domain_search/Other cases/test_search_enter_button.py: 1 warning
|
| tests/ui_tests/domain_search/Other cases/test_search_hide_prospect.py: 1 warning
|
| tests/ui_tests/domain_search/Other cases/test_search_incorrect_info.py: 1 warning
|
| tests/ui_tests/domain_search/Other cases/test_search_less_3_symbols.py: 3 warnings
|
| tests/ui_tests/domain_search/Other cases/test_video_tutorial.py: 1 warning
|
| tests/ui_tests/domain_search/Search and add to list/test_add_all_emails_on_page.py: 3 warnings
|
| tests/ui_tests/domain_search/Search and add to list/test_add_all_generic_to_list.py: 3 warnings
|
| tests/ui_tests/domain_search/Search and add to list/test_add_all_on_page_prospects.py: 3 warnings
|
| tests/ui_tests/domain_search/Search and add to list/test_add_all_prospects_on_page.py: 1 warning
|
| tests/ui_tests/domain_search/Search and add to list/test_add_company.py: 1 warning
|
| tests/ui_tests/domain_search/Search and add to list/test_add_one_email.py: 3 warnings
|
| tests/ui_tests/domain_search/Search and add to list/test_add_one_generic.py: 3 warnings
|
| tests/ui_tests/domain_search/Search and add to list/test_add_one_prospect.py: 1 warning
|
| tests/ui_tests/domain_search/Search and add to list/test_create_company_list_already_exist.py: 1 warning
|
| tests/ui_tests/domain_search/Search and add to list/test_create_list_incorrect_name.py: 2 warnings
|
| tests/ui_tests/domain_search/Search and add to list/test_search_different_domains.py: 7 warnings
|
| tests/ui_tests/domain_search/Search and add to list/test_search_snovio.py: 1 warning
|
| tests/ui_tests/domain_search/Search and add to list/test_show_more_add_emails.py: 3 warnings
|
| tests/ui_tests/domain_search/Team work and credits/test_no_credits.py: 6 warnings
|
| tests/ui_tests/domain_search/Team work and credits/test_team_lead_search.py: 1 warning
|
| tests/ui_tests/domain_search/Team work and credits/test_team_member_search.py: 1 warning
|
| /var/lib/jenkins/workspace/snov_domain_search/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/domain_search/Check inforamtion about companies/test_filter_position.py::TestDomainSearch::test_filter_position[chrome-1-20-samsung.com]
|
| FAILED tests/ui_tests/domain_search/Search and add to list/test_add_all_emails_on_page.py::TestDomainSearch::test_add_all_email_on_page[chrome-50-50-samsung.com]
|
| FAILED tests/ui_tests/domain_search/Search and add to list/test_add_all_generic_to_list.py::TestDomainSearch::test_add_all_generic_to_list[chrome-13-13-apple.com]
|
| FAILED tests/ui_tests/domain_search/Search and add to list/test_add_all_on_page_prospects.py::TestDomainSearch::test_add_all_on_page_prospects[chrome-20-20-samsung.com]
|
| FAILED tests/ui_tests/domain_search/Search and add to list/test_add_one_email.py::TestDomainSearch::test_add_one_email[chrome-10-20-samsung.com]
|
| FAILED tests/ui_tests/domain_search/Search and add to list/test_add_one_generic.py::TestDomainSearch::test_add_one_generic_email[chrome-13-13-samsung.com]
|
| FAILED tests/ui_tests/domain_search/Search and add to list/test_search_different_domains.py::TestDomainSearch::test_by_different_domains[chrome-apple.com-Cupertino-2000-3000-10-1-www.apple.com-Consumer Electronics-10001+]
|
| FAILED tests/ui_tests/domain_search/Search and add to list/test_search_different_domains.py::TestDomainSearch::test_by_different_domains[chrome-microsoft.com-Redmond-400-1000-0-1-news.microsoft.com-Computer Software-10001+]
|
| FAILED tests/ui_tests/domain_search/Search and add to list/test_show_more_add_emails.py::TestDomainSearch::test_show_more_add_emails[chrome-vw.com.br-100]
|
| FAILED tests/ui_tests/domain_search/Team work and credits/test_no_credits.py::TestDomainSearch::test_no_credits[chrome-apple.com-Low balance-rk-12-12-2021-1@snov.io]
|
| FAILED tests/ui_tests/domain_search/Team work and credits/test_no_credits.py::TestDomainSearch::test_no_credits[chrome-apple.com-Low balance-rk-00-00-2022-01@snov.io]
|
| ====== 11 failed, 33 passed, 68 warnings, 22 rerun in 1897.09s (0:31:37) =======
|