def set_power_capacity(self, capacity: int): from selenium.common.exceptions import WebDriverException try: self.get_driver().set_power_capacity(capacity) except WebDriverException: exception = f'{self.device_name}: powerCapacity method is only available for emulators' logger.log_error(error_with_traceback(exception)) raise Exception( 'powerCapacity method is only available for emulators')
def __show_error(self, exception) -> None: driver = self.args[0].testui_driver config: Configuration = driver.configuration if config.save_screenshot_on_fail: driver.save_screenshot() full_exception = exception if config.save_full_stacktrace: full_exception = error_with_traceback(exception) if driver.soft_assert: logger.log_error(full_exception) driver.set_error(full_exception) else: logger.log_error(full_exception) driver.set_error(full_exception) raise CollectionException(exception)
def find_image_match(self, comparison, threshold=0.90, assertion=False, not_found=False, image_match=''): now = datetime.now() current_time = now.strftime("%Y-%m-%d%H%M%S") image_name = f'{self.device_udid}{current_time}.png' image_path = self.save_screenshot(image_name) found, p = ImageRecognition(image_path, comparison, threshold, self.device_name).compare(image_match) if assertion and not found and not not_found: exception = f'{self.device_name}: The images compared did not match. threshold={threshold}, matched = {p}\n' logger.log_error(error_with_traceback(exception)) raise Exception(exception) os.remove(image_path) return found
def testui_error(driver, exception: str) -> None: config = driver.configuration if config.save_screenshot_on_fail: try: driver.save_screenshot() except Exception as error: exception += f'{logger.bcolors.FAIL} \nCould not take screenshot:{logger.bcolors.ENDC}\n {error}' full_exception = exception if config.save_full_stacktrace: full_exception = error_with_traceback(exception) if driver.soft_assert: logger.log_error(full_exception) driver.set_error(full_exception) else: logger.log_error(full_exception) driver.set_error(full_exception) raise ElementException( 'There were errors during the UI testing, check the logs')
def __show_error(self, exception): now = datetime.now() current_time = now.strftime("%Y-%m-%d%H%M%S") root_dir = os.path.dirname( os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) Path(root_dir + "/report_screenshots").mkdir(parents=True, exist_ok=True) image_name = f'ERROR-{self.args[0].device_name}-{current_time}.png' self.args[0].testui_driver.save_screenshot( image_name, directory='report_screenshots/') exception = exception + f'{logger.bcolors.FAIL} \n Screenshot taken and saved as: ' \ f'report_screenshots/testui-{image_name}{logger.bcolors.ENDC}' from testui.support.helpers import error_with_traceback full_exception = error_with_traceback(exception) if self.args[0].testui_driver.soft_assert: logger.log_error(full_exception) self.args[0].testui_driver.set_error(full_exception) return self else: logger.log_error(full_exception) self.args[0].testui_driver.set_error(full_exception) raise CollectionException(exception)
def testui_error(driver, exception): now = datetime.now() current_time = now.strftime("%Y-%m-%d%H%M%S") root_dir = os.path.dirname( os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) Path(root_dir + "/report_screenshots").mkdir(parents=True, exist_ok=True) image_name = f'ERROR-{driver.device_name}-{current_time}.png' try: driver.save_screenshot(image_name, directory='report_screenshots/') exception += f'{logger.bcolors.FAIL} \n Screenshot taken and saved as: ' \ f'report_screenshots/testui-{image_name}{logger.bcolors.ENDC}\n' except Exception as error: exception += f'{logger.bcolors.FAIL} \nCould not take screenshot:{logger.bcolors.ENDC}\n {error}' full_exception = error_with_traceback(exception) if driver.soft_assert: logger.log_error(full_exception) driver.set_error(full_exception) else: driver.set_error(full_exception) logger.log_error(full_exception) raise ElementException( 'There were errors during the UI testing, check the logs')
def switch_to_context(self, context=0, last=False): if last: context = len(self.__appium_driver.contexts) - 1 try: if len(self.__appium_driver.contexts) == 1: logger.log( f'{self.device_name}: There is only one context: {self.__appium_driver.contexts[context]}' ) elif context >= len(self.__appium_driver.contexts): logger.log_warn( f'{self.device_name}: Cannot switch to context {context}: there are just ' f'{len(self.__appium_driver.contexts)} contexts') self.__appium_driver.execute( 'switchToContext', {'name': self.__appium_driver.contexts[context]}) logger.log( f'{self.device_name}: Switched to context: {self.__appium_driver.contexts[context]}' ) except Exception as err: if self.__soft_assert: logger.log_error(err) else: raise err return self