aboutsummaryrefslogtreecommitdiffstats
path: root/services/frontend/base_actions/wait.py
diff options
context:
space:
mode:
Diffstat (limited to 'services/frontend/base_actions/wait.py')
-rw-r--r--services/frontend/base_actions/wait.py317
1 files changed, 317 insertions, 0 deletions
diff --git a/services/frontend/base_actions/wait.py b/services/frontend/base_actions/wait.py
new file mode 100644
index 0000000..50eff08
--- /dev/null
+++ b/services/frontend/base_actions/wait.py
@@ -0,0 +1,317 @@
+
+# ============LICENSE_START==========================================
+# org.onap.vvp/test-engine
+# ===================================================================
+# Copyright © 2017 AT&T Intellectual Property. All rights reserved.
+# ===================================================================
+#
+# Unless otherwise specified, all software contained herein is licensed
+# under the Apache License, Version 2.0 (the “License”);
+# you may not use this software except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#
+#
+# Unless otherwise specified, all documentation contained herein is licensed
+# under the Creative Commons License, Attribution 4.0 Intl. (the “License”);
+# you may not use this documentation except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://creativecommons.org/licenses/by/4.0/
+#
+# Unless required by applicable law or agreed to in writing, documentation
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# ============LICENSE_END============================================
+#
+# ECOMP is a trademark and service mark of AT&T Intellectual Property.
+import time
+
+from selenium.common.exceptions import NoSuchElementException
+from selenium.webdriver.common.by import By
+from selenium.webdriver.support import expected_conditions
+from selenium.webdriver.support.wait import WebDriverWait
+
+from services.constants import Constants
+from services.logging_service import LoggingServiceFactory
+from services.session import session
+
+
+logger = LoggingServiceFactory.get_logger()
+
+
+class Wait:
+
+ @staticmethod
+ def text_by_xpath(xpath, text, wait_for_page=False):
+ try: # Wait 4 seconds for element and compare to expected result.
+ if wait_for_page:
+ Wait.page_has_loaded()
+ WebDriverWait(session.ice_driver, session.wait_until_retires).until(
+ expected_conditions.text_to_be_present_in_element(
+ (By.XPATH, xpath), text)
+ )
+ # If failed - count the failure and add the error to list of errors.
+ except:
+ error_msg = "Text - " + text + " not found in xPath " + xpath
+ raise Exception(error_msg, xpath)
+
+ @staticmethod
+ def text_by_id(element_id, text, wait_for_page=False):
+ try: # Wait 4 seconds for element and compare to expected result.
+ if wait_for_page:
+ Wait.page_has_loaded()
+ WebDriverWait(session.ice_driver, session.wait_until_retires).until(
+ expected_conditions.text_to_be_present_in_element(
+ (By.ID, element_id), text)
+ )
+ # If failed - count the failure and add the error to list of errors.
+ except:
+ error_msg = "Text - " + text + " not found in ID " + element_id
+ raise Exception(error_msg, element_id)
+
+ @staticmethod
+ def text_by_css(css, text, wait_for_page=False):
+ try: # Wait 4 seconds for element and compare to expected result.
+ if wait_for_page:
+ Wait.page_has_loaded()
+ WebDriverWait(session.ice_driver, session.wait_until_retires).until(
+ expected_conditions.text_to_be_present_in_element(
+ (By.CSS_SELECTOR, css), text)
+ )
+ # If failed - count the failure and add the error to list of errors.
+ except Exception as e:
+ error_msg = "Text - " + text + " not found in CSS - " + css
+ raise Exception(error_msg, e)
+
+ @staticmethod
+ def text_by_name(name, text, wait_for_page=False):
+ try: # Wait 4 seconds for element and compare to expected result.
+ if wait_for_page:
+ Wait.page_has_loaded()
+ WebDriverWait(session.ice_driver, session.wait_until_retires).until(
+ expected_conditions.text_to_be_present_in_element(
+ (By.NAME, name), text)
+ )
+ # If failed - count the failure and add the error to list of errors.
+ except Exception as e:
+ error_msg = "Text - " + text + " not found by NAME - " + name
+ raise Exception(error_msg, e)
+
+ @staticmethod
+ def id(element_id, wait_for_page=False):
+ try: # Wait 4 seconds for element and compare to expected result.
+ if wait_for_page:
+ Wait.page_has_loaded()
+ WebDriverWait(session.ice_driver, session.wait_until_retires).until(
+ expected_conditions.visibility_of_element_located(
+ (By.ID, element_id))
+ )
+ # If failed - count the failure and add the error to list of errors.
+ except Exception as e:
+ error_msg = "Didn't find ID " + element_id
+ raise Exception(error_msg, e)
+
+ @staticmethod
+ def css(element_css, wait_for_page=False):
+ try: # Wait 4 seconds for element and compare to expected result.
+ if wait_for_page:
+ Wait.page_has_loaded()
+ WebDriverWait(session.ice_driver, session.wait_until_retires).until(
+ expected_conditions.visibility_of_element_located(
+ (By.CSS_SELECTOR, element_css))
+ )
+ # If failed - count the failure and add the error to list of errors.
+ except Exception as e:
+ error_msg = "Didn't find CSS Selector " + element_css
+ raise Exception(error_msg, e)
+
+ @staticmethod
+ def is_css_exists(element_css, wait_for_page=False):
+ try: # Wait 4 seconds for element and compare to expected result.
+ if wait_for_page:
+ Wait.page_has_loaded()
+ WebDriverWait(session.ice_driver, session.wait_until_implicit_time).until(
+ expected_conditions.visibility_of_element_located(
+ (By.CSS_SELECTOR, element_css))
+ )
+ return True
+ # If failed - count the failure and add the error to list of errors.
+ except Exception as e:
+ error_msg = "Didn't find CSS Selector " + element_css
+ return False
+
+ @staticmethod
+ def link_text(link_inner_text, wait_for_page=False):
+ try:
+ if wait_for_page:
+ Wait.page_has_loaded()
+ WebDriverWait(session.ice_driver, session.wait_until_retires).until(
+ expected_conditions.visibility_of_element_located(
+ (By.LINK_TEXT, link_inner_text))
+ )
+ # If failed - count the failure and add the error to list of errors.
+ except Exception as e:
+ error_msg = "Didn't find LINK TEXT " + link_inner_text
+ raise Exception(error_msg, e)
+
+ @staticmethod
+ def name(element_name, wait_for_page=False):
+ try:
+ if wait_for_page:
+ Wait.page_has_loaded()
+ WebDriverWait(session.ice_driver, session.wait_until_retires).until(
+ expected_conditions.visibility_of_element_located(
+ (By.NAME, element_name))
+ )
+ # If failed - count the failure and add the error to list of errors.
+ except Exception as e:
+ error_msg = "Didn't find NAME " + element_name
+ raise Exception(error_msg, e)
+
+ @staticmethod
+ def xpath(element_xpath, wait_for_page=False):
+ try:
+ if wait_for_page:
+ Wait.page_has_loaded()
+ WebDriverWait(session.ice_driver, session.wait_until_retires).until(
+ expected_conditions.visibility_of_element_located(
+ (By.XPATH, element_xpath))
+ )
+ # If failed - count the failure and add the error to list of errors.
+ except Exception as e:
+ error_msg = "Didn't find XPath " + element_xpath
+ raise Exception(error_msg, e)
+
+ @staticmethod
+ def page_has_loaded():
+ countwait_untilelement_to_be_presented_by_id = 0
+ for _ in range(Constants.FEConstants.RETRIES_NUMBER):
+ httpRequests = session.ice_driver.execute_script(
+ 'return window.angular ? window.angular.element("body").injector().get("$http").pendingRequests.length : 1;')
+ if(str(httpRequests) == "0"):
+ time.sleep(session.wait_until_time_pause)
+ return
+ logger.debug(
+ "Checking if {} page is loaded. ".format(session.ice_driver.current_url))
+ time.sleep(session.wait_until_time_pause)
+ countwait_untilelement_to_be_presented_by_id += 1
+
+ raise Exception("Page loading took too much time")
+
+ @staticmethod
+ def modal_to_dissappear():
+ session.ice_driver.implicitly_wait(0)
+ i = 0
+ not_found = False
+ while i < session.wait_until_retires:
+ try:
+ session.ice_driver.find_element_by_css_selector(
+ Constants.Dashboard.Wizard.Open.CSS)
+ except NoSuchElementException:
+ not_found = True
+ try:
+ session.ice_driver.find_element_by_class_name(
+ Constants.Dashboard.Wizard.Open.CLASS_NAME)
+ not_found = False
+ except NoSuchElementException:
+ not_found = True
+
+ if not_found:
+ break
+
+ else:
+ time.sleep(session.wait_until_time_pause)
+ i += 1
+
+ session.ice_driver.implicitly_wait(session.wait_until_implicit_time)
+ if not_found:
+ return True
+ else:
+ raise Exception("waitForModalToDissapper")
+
+ @staticmethod
+ def id_to_dissappear(id_element, wait_for_page=False):
+ if wait_for_page:
+ Wait.page_has_loaded()
+ session.ice_driver.implicitly_wait(0)
+ i = 0
+ not_found = False
+ while i < session.wait_until_retires:
+ try:
+ session.ice_driver.find_element_by_id(id_element)
+ except NoSuchElementException:
+ not_found = True
+
+ if not_found:
+ break
+ else:
+ time.sleep(session.wait_until_time_pause)
+ i += 1
+
+ session.ice_driver.implicitly_wait(session.wait_until_implicit_time)
+ if not_found:
+ return True
+ else:
+ raise Exception(
+ "id_to_dissappear " + id_element + " num of retries = " + str(i))
+
+ @staticmethod
+ def name_to_dissappear(name_element, wait_for_page=False):
+ if wait_for_page:
+ Wait.page_has_loaded()
+ session.ice_driver.implicitly_wait(0)
+ i = 0
+ not_found = False
+ while i < session.wait_until_retires:
+ try:
+ session.ice_driver.find_element_by_name(name_element)
+ except NoSuchElementException:
+ not_found = True
+
+ if not_found:
+ break
+ else:
+ time.sleep(session.wait_until_time_pause)
+ i += 1
+
+ session.ice_driver.implicitly_wait(session.wait_until_implicit_time)
+ if not_found:
+ return True
+ else:
+ raise Exception(
+ "name_to_dissappear " + name_element + " num of retries = " + str(i))
+
+ @staticmethod
+ def css_to_dissappear(css_element):
+ session.ice_driver.implicitly_wait(0)
+ i = 0
+ not_found = False
+ while i < session.wait_until_retires:
+ try:
+ session.ice_driver.find_element_by_css_selector(css_element)
+ except NoSuchElementException:
+ not_found = True
+
+ if not_found:
+ break
+ else:
+ time.sleep(session.wait_until_time_pause)
+ i += 1
+
+ session.ice_driver.implicitly_wait(session.wait_until_implicit_time)
+ if not_found:
+ return True
+ else:
+ raise Exception("css_to_dissappear" + css_element)