How to use get_explicitly_wait method in toolium

Best Python code snippet using toolium_python

utilities.py

Source:utilities.py Github

copy

Full Screen

...28 def set_implicitly_wait(self):29 implicitly_wait = self.driver_wrapper.config.get_optional('Driver', 'implicitly_wait')30 if implicitly_wait:31 self.driver_wrapper.driver.implicitly_wait(implicitly_wait)32 def get_explicitly_wait(self):33 return int(self.driver_wrapper.config.get_optional('Driver', 'explicitly_wait', '10'))34 def capture_screenshot(self, name):35 from arc.core.driver.driver_manager import DriverManager36 filename = '{0:0=2d}_{1}'.format(DriverManager.screenshots_number, name)37 filename = '{}.png'.format(get_valid_filename(filename))38 filepath = os.path.join(DriverManager.screenshots_directory, filename)39 if not os.path.exists(DriverManager.screenshots_directory):40 os.makedirs(DriverManager.screenshots_directory)41 if self.driver_wrapper.driver.get_screenshot_as_file(filepath):42 self.logger.info('Screenshot saved in %s', filepath)43 DriverManager.screenshots_number += 144 return filepath45 return None46 def save_webdriver_logs(self, test_name):47 try:48 log_types = self.driver_wrapper.driver.log_types49 except (Exception,):50 # geckodriver does not implement log_types, but it implements get_log for client and server51 log_types = ['client', 'server']52 self.logger.debug("Reading logs from '%s' and writing them to log files", ', '.join(log_types))53 for log_type in log_types:54 try:55 self.save_webdriver_logs_by_type(log_type, test_name)56 except (Exception,):57 # Capture exceptions to avoid errors in teardown method58 pass59 def save_webdriver_logs_by_type(self, log_type, test_name):60 try:61 logs = self.driver_wrapper.driver.get_log(log_type)62 except (Exception,):63 return64 if len(logs) > 0:65 from arc.core.driver.driver_manager import DriverManager66 log_file_name = '{}_{}.txt'.format(get_valid_filename(test_name), log_type)67 log_file_name = os.path.join(DriverManager.logs_directory, log_file_name)68 with open(log_file_name, 'a+', encoding='utf-8') as log_file:69 driver_type = self.driver_wrapper.config.get('Driver', 'type')70 log_file.write(71 u"\n{} '{}' test logs with driver = {}\n\n".format(datetime.now(), test_name, driver_type))72 for entry in logs:73 timestamp = datetime.fromtimestamp(float(entry['timestamp']) / 1000.).strftime(74 '%Y-%m-%d %H:%M:%S.%f')75 log_file.write(u'{}\t{}\t{}\n'.format(timestamp, entry['level'], entry['message'].rstrip()))76 def discard_logcat_logs(self):77 if self.driver_wrapper.is_android_test():78 try:79 self.driver_wrapper.driver.get_log('logcat')80 except (Exception,):81 pass82 @staticmethod83 def get_locator_by(by: str):84 by = str(by).lower()85 if by == 'xpath':86 return By.XPATH87 elif by == 'id':88 return By.ID89 elif by == 'link text':90 return By.LINK_TEXT91 elif by == 'name':92 return By.NAME93 elif by == 'tag name':94 return By.TAG_NAME95 elif by == 'class name':96 return By.CLASS_NAME97 elif by == 'css selector':98 return By.CSS_SELECTOR99 elif by == 'partial link text':100 return By.PARTIAL_LINK_TEXT101 else:102 return None103 def _expected_condition_find_element(self, element):104 web_element = False105 try:106 from arc.page_elements import PageElement107 if isinstance(element, PageElement):108 # Use _find_web_element() instead of web_element to avoid logging error message109 element._web_element = None110 element._find_web_element()111 web_element = element._web_element112 elif isinstance(element, tuple):113 web_element = self.driver_wrapper.driver.find_element(*element)114 except NoSuchElementException:115 pass116 return web_element117 def _expected_condition_find_element_visible(self, element):118 try:119 web_element = self._expected_condition_find_element(element)120 return web_element if web_element and web_element.is_displayed() else False121 except NoSuchElementException as e:122 raise e123 except StaleElementReferenceException:124 return False125 def _expected_condition_find_element_not_visible(self, element):126 web_element = self._expected_condition_find_element(element)127 try:128 return True if not web_element or not web_element.is_displayed() else False129 except StaleElementReferenceException:130 return False131 def _expected_condition_find_first_element(self, elements):132 from arc.page_elements import PageElement133 element_found = None134 for element in elements:135 try:136 if isinstance(element, PageElement):137 element._web_element = None138 element._find_web_element()139 else:140 self.driver_wrapper.driver.find_element(*element)141 element_found = element142 break143 except (NoSuchElementException, TypeError):144 pass145 return element_found146 def _expected_condition_find_element_clickable(self, element):147 web_element = self._expected_condition_find_element_visible(element)148 try:149 return web_element if web_element and web_element.is_enabled() else False150 except StaleElementReferenceException:151 return False152 def _expected_condition_find_element_stopped(self, element_times):153 element, times = element_times154 web_element = self._expected_condition_find_element(element)155 try:156 locations_list = [tuple(web_element.location.values()) for _ in range(int(times)) if not time.sleep(0.001)]157 return web_element if set(locations_list) == set(locations_list[-1:]) else False158 except StaleElementReferenceException:159 return False160 def _expected_condition_find_element_containing_text(self, element_text_pair):161 element, text = element_text_pair162 web_element = self._expected_condition_find_element(element)163 try:164 return web_element if web_element and text in web_element.text else False165 except StaleElementReferenceException:166 return False167 def _expected_condition_find_element_not_containing_text(self, element_text_pair):168 element, text = element_text_pair169 web_element = self._expected_condition_find_element(element)170 try:171 return web_element if web_element and text not in web_element.text else False172 except StaleElementReferenceException:173 return False174 def _expected_condition_value_in_element_attribute(self, element_attribute_value):175 element, attribute, value = element_attribute_value176 web_element = self._expected_condition_find_element(element)177 try:178 return web_element if web_element and web_element.get_attribute(attribute) == value else False179 except StaleElementReferenceException:180 return False181 def _wait_until(self, condition_method, condition_input, timeout=None):182 # Remove implicitly wait timeout183 self.driver_wrapper.driver.implicitly_wait(0)184 # Get explicitly wait timeout185 timeout = timeout if timeout else self.get_explicitly_wait()186 # Wait for condition187 if not isinstance(condition_input.web_element, WebElement):188 raise NoSuchElementException(condition_input.text)189 condition_response = WebDriverWait(self.driver_wrapper.driver, timeout).until(190 lambda s: condition_method(condition_input))191 # Restore implicitly wait timeout from properties192 self.set_implicitly_wait()193 return condition_response194 def wait_until_element_present(self, element, timeout=None):195 return self._wait_until(self._expected_condition_find_element, element, timeout)196 def wait_until_element_visible(self, element, timeout=None):197 return self._wait_until(self._expected_condition_find_element_visible, element, timeout)198 def wait_until_element_not_visible(self, element, timeout=None):199 return self._wait_until(self._expected_condition_find_element_not_visible, element, timeout)200 def wait_until_first_element_is_found(self, elements, timeout=None):201 try:202 return self._wait_until(self._expected_condition_find_first_element, elements, timeout)203 except TimeoutException as exception:204 msg = 'None of the page elements has been found after %s seconds'205 timeout = timeout if timeout else self.get_explicitly_wait()206 self.logger.error(msg, timeout)207 exception.msg += "\n {}".format(msg % timeout)208 raise exception209 def wait_until_element_clickable(self, element, timeout=None):210 return self._wait_until(self._expected_condition_find_element_clickable, element, timeout)211 def wait_until_element_stops(self, element, times=1000, timeout=None):212 return self._wait_until(self._expected_condition_find_element_stopped, (element, times), timeout)213 def wait_until_element_contains_text(self, element, text, timeout=None):214 return self._wait_until(self._expected_condition_find_element_containing_text, (element, text), timeout)215 def wait_until_element_not_contain_text(self, element, text, timeout=None):216 return self._wait_until(self._expected_condition_find_element_not_containing_text, (element, text), timeout)217 def wait_until_element_attribute_is(self, element, attribute, value, timeout=None):218 return self._wait_until(self._expected_condition_value_in_element_attribute, (element, attribute, value),219 timeout)...

Full Screen

Full Screen

driver_wait_utils.py

Source:driver_wait_utils.py Github

copy

Full Screen

...32 """Read implicitly timeout from configuration properties and configure driver implicitly wait"""33 implicitly_wait = self.get_implicitly_wait()34 if implicitly_wait:35 self.driver_wrapper.driver.implicitly_wait(implicitly_wait)36 def get_explicitly_wait(self):37 """Read explicitly timeout from configuration properties38 :returns: configured explicitly timeout (default timeout 10 seconds)39 """40 return int(self.driver_wrapper.config.get_optional('Driver', 'explicitly_wait', '10'))41 def _expected_condition_find_element(self, element):42 """Tries to find the element, but does not thrown an exception if the element is not found43 :param element: PageElement or element locator as a tuple (locator_type, locator_value) to be found44 :returns: the web element if it has been found or False45 :rtype: selenium.webdriver.remote.webelement.WebElement or appium.webdriver.webelement.WebElement46 """47 from toolium.pageelements.page_element import PageElement48 web_element = False49 try:50 if isinstance(element, PageElement):51 # Use _find_web_element() instead of web_element to avoid logging error message52 element._web_element = None53 element._find_web_element()54 web_element = element._web_element55 elif isinstance(element, tuple):56 web_element = self.driver_wrapper.driver.find_element(*element)57 except NoSuchElementException:58 pass59 return web_element60 def _expected_condition_find_element_visible(self, element):61 """Tries to find the element and checks that it is visible, but does not thrown an exception if the element is62 not found63 :param element: PageElement or element locator as a tuple (locator_type, locator_value) to be found64 :returns: the web element if it is visible or False65 :rtype: selenium.webdriver.remote.webelement.WebElement or appium.webdriver.webelement.WebElement66 """67 web_element = self._expected_condition_find_element(element)68 try:69 return web_element if web_element and web_element.is_displayed() else False70 except StaleElementReferenceException:71 return False72 def _expected_condition_find_element_not_visible(self, element):73 """Tries to find the element and checks that it is visible, but does not thrown an exception if the element is74 not found75 :param element: PageElement or element locator as a tuple (locator_type, locator_value) to be found76 :returns: True if the web element is not found or it is not visible77 """78 web_element = self._expected_condition_find_element(element)79 try:80 return True if not web_element or not web_element.is_displayed() else False81 except StaleElementReferenceException:82 return False83 def _expected_condition_find_first_element(self, elements):84 """Try to find sequentially the elements of the list and return the first element found85 :param elements: list of PageElements or element locators as a tuple (locator_type, locator_value) to be found86 sequentially87 :returns: first element found or None88 :rtype: toolium.pageelements.PageElement or tuple89 """90 from toolium.pageelements.page_element import PageElement91 element_found = None92 for element in elements:93 try:94 if isinstance(element, PageElement):95 element._web_element = None96 element._find_web_element()97 else:98 self.driver_wrapper.driver.find_element(*element)99 element_found = element100 break101 except (NoSuchElementException, TypeError):102 pass103 return element_found104 def _expected_condition_find_element_clickable(self, element):105 """Tries to find the element and checks that it is clickable, but does not thrown an exception if the element106 is not found107 :param element: PageElement or element locator as a tuple (locator_type, locator_value) to be found108 :returns: the web element if it is clickable or False109 :rtype: selenium.webdriver.remote.webelement.WebElement or appium.webdriver.webelement.WebElement110 """111 web_element = self._expected_condition_find_element_visible(element)112 try:113 return web_element if web_element and web_element.is_enabled() else False114 except StaleElementReferenceException:115 return False116 def _expected_condition_find_element_stopped(self, element_times):117 """Tries to find the element and checks that it has stopped moving, but does not thrown an exception if the118 element is not found119 :param element_times: Tuple with 2 items where:120 [0] element: PageElement or element locator as a tuple (locator_type, locator_value) to be found121 [1] times: number of iterations checking the element's location that must be the same for all of them122 in order to considering the element has stopped123 :returns: the web element if it is clickable or False124 :rtype: selenium.webdriver.remote.webelement.WebElement or appium.webdriver.webelement.WebElement125 """126 element, times = element_times127 web_element = self._expected_condition_find_element(element)128 try:129 locations_list = [tuple(web_element.location.values()) for i in range(int(times)) if not time.sleep(0.001)]130 return web_element if set(locations_list) == set(locations_list[-1:]) else False131 except StaleElementReferenceException:132 return False133 def _expected_condition_find_element_containing_text(self, element_text_pair):134 """Tries to find the element and checks that it contains the specified text, but does not thrown an exception if135 the element is not found136 :param element_text_pair: Tuple with 2 items where:137 [0] element: PageElement or element locator as a tuple (locator_type, locator_value) to be found138 [1] text: text to be contained into the element139 :returns: the web element if it contains the text or False140 :rtype: selenium.webdriver.remote.webelement.WebElement or appium.webdriver.webelement.WebElement141 """142 element, text = element_text_pair143 web_element = self._expected_condition_find_element(element)144 try:145 return web_element if web_element and text in web_element.text else False146 except StaleElementReferenceException:147 return False148 def _expected_condition_find_element_not_containing_text(self, element_text_pair):149 """Tries to find the element and checks that it does not contain the specified text,150 but does not thrown an exception if the element is found151 :param element_text_pair: Tuple with 2 items where:152 [0] element: PageElement or element locator as a tuple (locator_type, locator_value) to be found153 [1] text: text to not be contained into the element154 :returns: the web element if it does not contain the text or False155 :rtype: selenium.webdriver.remote.webelement.WebElement or appium.webdriver.webelement.WebElement156 """157 element, text = element_text_pair158 web_element = self._expected_condition_find_element(element)159 try:160 return web_element if web_element and text not in web_element.text else False161 except StaleElementReferenceException:162 return False163 def _expected_condition_value_in_element_attribute(self, element_attribute_value):164 """Tries to find the element and checks that it contains the requested attribute with the expected value,165 but does not thrown an exception if the element is not found166 :param element_attribute_value: Tuple with 3 items where:167 [0] element: PageElement or element locator as a tuple (locator_type, locator_value) to be found168 [1] attribute: element's attribute where to check its value169 [2] value: expected value for the element's attribute170 :returns: the web element if it contains the expected value for the requested attribute or False171 :rtype: selenium.webdriver.remote.webelement.WebElement or appium.webdriver.webelement.WebElement172 """173 element, attribute, value = element_attribute_value174 web_element = self._expected_condition_find_element(element)175 try:176 return web_element if web_element and web_element.get_attribute(attribute) == value else False177 except StaleElementReferenceException:178 return False179 def _expected_condition_ajax_request_completed(self, element):180 """Load all ajax request181 :returns: the ajax request is completed182 """183 return self.driver_wrapper.driver.execute_script("return jQuery.active == 0")184 def _wait_until(self, condition_method, condition_input, timeout=None):185 """186 Common method to wait until condition met187 :param condition_method: method to check the condition188 :param condition_input: parameter that will be passed to the condition method189 :param timeout: max time to wait190 :returns: condition method response191 """192 # Remove implicitly wait timeout193 implicitly_wait = self.get_implicitly_wait()194 if implicitly_wait != 0:195 self.driver_wrapper.driver.implicitly_wait(0)196 try:197 # Get explicitly wait timeout198 timeout = timeout if timeout else self.get_explicitly_wait()199 # Wait for condition200 condition_response = WebDriverWait(self.driver_wrapper.driver, timeout).until(201 lambda s: condition_method(condition_input))202 finally:203 # Restore implicitly wait timeout from properties204 if implicitly_wait != 0:205 self.set_implicitly_wait()206 return condition_response207 def wait_until_element_present(self, element, timeout=None):208 """Search element and wait until it is found209 :param element: PageElement or element locator as a tuple (locator_type, locator_value) to be found210 :param timeout: max time to wait211 :returns: the web element if it is present212 :rtype: selenium.webdriver.remote.webelement.WebElement or appium.webdriver.webelement.WebElement213 :raises TimeoutException: If the element is not found after the timeout214 """215 return self._wait_until(self._expected_condition_find_element, element, timeout)216 def wait_until_element_visible(self, element, timeout=None):217 """Search element and wait until it is visible218 :param element: PageElement or element locator as a tuple (locator_type, locator_value) to be found219 :param timeout: max time to wait220 :returns: the web element if it is visible221 :rtype: selenium.webdriver.remote.webelement.WebElement or appium.webdriver.webelement.WebElement222 :raises TimeoutException: If the element is still not visible after the timeout223 """224 return self._wait_until(self._expected_condition_find_element_visible, element, timeout)225 def wait_until_element_not_visible(self, element, timeout=None):226 """Search element and wait until it is not visible227 :param element: PageElement or element locator as a tuple (locator_type, locator_value) to be found228 :param timeout: max time to wait229 :returns: the web element if it exists but is not visible230 :rtype: selenium.webdriver.remote.webelement.WebElement or appium.webdriver.webelement.WebElement231 :raises TimeoutException: If the element is still visible after the timeout232 """233 return self._wait_until(self._expected_condition_find_element_not_visible, element, timeout)234 def wait_until_first_element_is_found(self, elements, timeout=None):235 """Search list of elements and wait until one of them is found236 :param elements: list of PageElements or element locators as a tuple (locator_type, locator_value) to be found237 sequentially238 :param timeout: max time to wait239 :returns: first element found240 :rtype: toolium.pageelements.PageElement or tuple241 :raises TimeoutException: If no element in the list is found after the timeout242 """243 try:244 return self._wait_until(self._expected_condition_find_first_element, elements, timeout)245 except TimeoutException as exception:246 msg = 'None of the page elements has been found after %s seconds'247 timeout = timeout if timeout else self.get_explicitly_wait()248 self.logger.error(msg, timeout)249 exception.msg += "\n {}".format(msg % timeout)250 raise exception251 def wait_until_element_clickable(self, element, timeout=None):252 """Search element and wait until it is clickable253 :param element: PageElement or element locator as a tuple (locator_type, locator_value) to be found254 :param timeout: max time to wait255 :returns: the web element if it is clickable256 :rtype: selenium.webdriver.remote.webelement.WebElement or appium.webdriver.webelement.WebElement257 :raises TimeoutException: If the element is not clickable after the timeout258 """259 return self._wait_until(self._expected_condition_find_element_clickable, element, timeout)260 def wait_until_element_stops(self, element, times=1000, timeout=None):261 """Search element and wait until it has stopped moving...

Full Screen

Full Screen

page_element.py

Source:page_element.py Github

copy

Full Screen

...91 self.utils.wait_until_element_visible(self, timeout)92 except TimeoutException as exception:93 parent_msg = " and parent locator '{}'".format(self.parent) if self.parent else ''94 msg = "Page element of type '%s' with locator %s%s not found or is not visible after %s seconds"95 timeout = timeout if timeout else self.utils.get_explicitly_wait()96 self.logger.error(msg, type(self).__name__, self.locator, parent_msg, timeout)97 exception.msg += "\n {}".format(msg % (type(self).__name__, self.locator, parent_msg, timeout))98 raise exception99 return self100 def wait_until_not_visible(self, timeout=None):101 try:102 self.utils.wait_until_element_not_visible(self, timeout)103 except TimeoutException as exception:104 parent_msg = " and parent locator '{}'".format(self.parent) if self.parent else ''105 msg = "Page element of type '%s' with locator %s%s is still visible after %s seconds"106 timeout = timeout if timeout else self.utils.get_explicitly_wait()107 self.logger.error(msg, type(self).__name__, self.locator, parent_msg, timeout)108 exception.msg += "\n {}".format(msg % (type(self).__name__, self.locator, parent_msg, timeout))109 raise exception110 return self111 def wait_until_clickable(self, timeout=None):112 try:113 self.utils.wait_until_element_clickable(self, timeout)114 except TimeoutException as exception:115 parent_msg = " and parent locator '{}'".format(self.parent) if self.parent else ''116 msg = "Page element of type '%s' with locator %s%s not found or is not clickable after %s seconds"117 timeout = timeout if timeout else self.utils.get_explicitly_wait()118 self.logger.error(msg, type(self).__name__, self.locator, parent_msg, timeout)119 exception.msg += "\n {}".format(msg % (type(self).__name__, self.locator, parent_msg, timeout))120 raise exception121 return self122 def assert_screenshot(self, filename, threshold=0, exclude_elements=None, force=False):123 if exclude_elements is None:124 exclude_elements = []125 VisualTest(self.driver_wrapper, force).assert_screenshot(self.web_element, filename, self.__class__.__name__,126 threshold, exclude_elements)127 def get_attribute(self, name):128 """Get the given attribute or property of the element129 :param name: name of the attribute/property to retrieve130 :returns: attribute value131 """...

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run toolium automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful