GUI acceptance tests using environment deployed from packages.
Build: #2582 was successful
Job: Oneprovider ACL directories privileges create was successful
create subdirectory[1oz 1op deployed-group-group1-fails-all except [data:traverse directory]]: Test case result
The below summarizes the result of the test " create subdirectory[1oz 1op deployed-group-group1-fails-all except [data:traverse directory]]" in build 2,582 of Onedata Products - gui acceptance pkg - Oneprovider ACL directories privileges create.
- Description
- create subdirectory[1oz 1op deployed-group-group1-fails-all except [data:traverse directory]]
- Test class
- gui.scenarios.test_oneprovider_acl_dir_privileges_create
- Method
- test_create_subdirectory[1oz_1op_deployed-group-group1-fails-all except [data:traverse directory]]
- Jira Issue
-
- Duration
- 3 mins
- Status
- Failed (Existing Failure)
Error Log
RuntimeError: no item found in file browser in Oneprovider page selenium = {'browser_user1': <selenium.webdriver.chrome.webdriver.WebDriver (session="f5002583782501cdb814f801293e9241")>, 'space_owner_browser': <selenium.webdriver.chrome.webdriver.WebDriver (session="7758058bf57c11cd1e5d71354db1d3fc")>} browser_id = 'browser_user1', path = 'dir1', item_type = 'directory' name = 'subdir' tmp_memory = defaultdict(<class 'dict'>, {'user1': {'shares': {}, 'spaces': {}, 'groups': {}, 'mailbox': {}, 'oz': {}, 'window': {'...': {'modal': None}, 'file_browser': <tests.gui.utils.oneprovider.file_browser._FileBrowser object at 0x7fdb174561c0>}}) op_container = <class 'tests.gui.utils.oneprovider.OPLoggedIn'>, res = 'fails' space = 'space1', modals = <class 'tests.gui.utils.common.modals.Modals'> oz_page = <class 'tests.gui.utils.onezone.OZLoggedIn'> @wt(parsers.re(r'user of (?P<browser_id>\w+) (?P<res>.*) to create ' r'(?P<item_type>directory) "(?P<name>[\w._-]+)" ' '(in "(?P<path>.*)" )?in "(?P<space>.*)"')) def create_item_in_op_gui(selenium, browser_id, path, item_type, name, tmp_memory, op_container, res, space, modals, oz_page): # change None to empty string if path not given path = path.lstrip('/') if path else '' button = f'New {item_type}' modal_header = f'Create new {item_type}:' modal_name = 'Create dir' text = 'Creating directory failed' option = 'enter' def _open_menu_for_item_in_file_browser(): if path: go_to_path(selenium, browser_id, tmp_memory, path, op_container) click_button_from_file_browser_menu_bar(browser_id, button, tmp_memory) try: > _open_menu_for_item_in_file_browser() tests/gui/meta_steps/oneprovider/data.py:155: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ def _open_menu_for_item_in_file_browser(): if path: > go_to_path(selenium, browser_id, tmp_memory, path, op_container) tests/gui/meta_steps/oneprovider/data.py:151: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ args = ({'browser_user1': <selenium.webdriver.chrome.webdriver.WebDriver (session="f5002583782501cdb814f801293e9241")>, 'spac...vider.file_browser._FileBrowser object at 0x7fdb174561c0>}}), 'dir1', <class 'tests.gui.utils.oneprovider.OPLoggedIn'>) kwargs = {} ba = <BoundArguments (selenium={'browser_user1': <selenium.webdriver.chrome.webdriver.WebDriver (session="f5002583782501cdb...74561c0>}}), path='dir1', op_container=<class 'tests.gui.utils.oneprovider.OPLoggedIn'>, which_browser='file browser')> param = <Parameter "which_browser='file browser'"> ann = <class 'inspect._empty'> @wraps(fun) def wrapper(*args, **kwargs): ba = sig.bind(*args, **kwargs) ba.apply_defaults() for param in parameters.values(): ann = param.annotation if ann is not inspect.Parameter.empty: value = ba.arguments[param.name] try: if not isinstance(value, ann): ba.arguments[param.name] = ann(value) except Exception as ex: msg = f"Cannot cast '{param.name}' <{value}> to {ann}" raise ValueError(msg) from ex > return fun(*ba.args, **ba.kwargs) tests/utils/bdd_utils.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ selenium = {'browser_user1': <selenium.webdriver.chrome.webdriver.WebDriver (session="f5002583782501cdb814f801293e9241")>, 'space_owner_browser': <selenium.webdriver.chrome.webdriver.WebDriver (session="7758058bf57c11cd1e5d71354db1d3fc")>} browser_id = 'browser_user1' tmp_memory = defaultdict(<class 'dict'>, {'user1': {'shares': {}, 'spaces': {}, 'groups': {}, 'mailbox': {}, 'oz': {}, 'window': {'...': {'modal': None}, 'file_browser': <tests.gui.utils.oneprovider.file_browser._FileBrowser object at 0x7fdb174561c0>}}) path = 'dir1', op_container = <class 'tests.gui.utils.oneprovider.OPLoggedIn'> which_browser = 'file browser' > ??? <decorator-gen-737>:2: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ fun = <function go_to_path at 0x7fdb178aff70> args = ({'browser_user1': <selenium.webdriver.chrome.webdriver.WebDriver (session="f5002583782501cdb814f801293e9241")>, 'spac...er._FileBrowser object at 0x7fdb174561c0>}}), 'dir1', <class 'tests.gui.utils.oneprovider.OPLoggedIn'>, 'file browser') kwargs = {}, now = 1685564805.2533982, limit = 1685564809.2533982 i = 1685564820.4034936 @decorator def wrapper(fun, *args, **kwargs): now = time() limit, i = (now + timeout, now) if timeout else (attempts, 0) while i < limit: try: result = fun(*args, **kwargs) except exceptions: sleep(interval) i = time() if timeout else i+1 continue else: return result > return fun(*args, **kwargs) tests/utils/utils.py:95: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ selenium = {'browser_user1': <selenium.webdriver.chrome.webdriver.WebDriver (session="f5002583782501cdb814f801293e9241")>, 'space_owner_browser': <selenium.webdriver.chrome.webdriver.WebDriver (session="7758058bf57c11cd1e5d71354db1d3fc")>} browser_id = 'browser_user1' tmp_memory = defaultdict(<class 'dict'>, {'user1': {'shares': {}, 'spaces': {}, 'groups': {}, 'mailbox': {}, 'oz': {}, 'window': {'...': {'modal': None}, 'file_browser': <tests.gui.utils.oneprovider.file_browser._FileBrowser object at 0x7fdb174561c0>}}) path = 'dir1', op_container = <class 'tests.gui.utils.oneprovider.OPLoggedIn'> which_browser = 'file browser' @wt(parsers.parse('user of {browser_id} goes to "{path}" in {which_browser}')) @repeat_failed(timeout=WAIT_FRONTEND) def go_to_path(selenium, browser_id, tmp_memory, path, op_container, which_browser='file browser'): if '/' in path: item_name, path_list = get_item_name_and_containing_dir_path(path) path_list.append(item_name) else: path_list = [path] for directory in path_list: if directory != '': > click_and_press_enter_on_item_in_browser(selenium, browser_id, directory, tmp_memory, op_container, which_browser) tests/gui/meta_steps/oneprovider/data.py:431: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ args = ({'browser_user1': <selenium.webdriver.chrome.webdriver.WebDriver (session="f5002583782501cdb814f801293e9241")>, 'spac...le_browser._FileBrowser object at 0x7fdb174561c0>}}), <class 'tests.gui.utils.oneprovider.OPLoggedIn'>, 'file browser') kwargs = {} ba = <BoundArguments (selenium={'browser_user1': <selenium.webdriver.chrome.webdriver.WebDriver (session="f5002583782501cdb...ct at 0x7fdb174561c0>}}), op_container=<class 'tests.gui.utils.oneprovider.OPLoggedIn'>, which_browser='file browser')> param = <Parameter "which_browser='file browser'"> ann = <class 'inspect._empty'> @wraps(fun) def wrapper(*args, **kwargs): ba = sig.bind(*args, **kwargs) ba.apply_defaults() for param in parameters.values(): ann = param.annotation if ann is not inspect.Parameter.empty: value = ba.arguments[param.name] try: if not isinstance(value, ann): ba.arguments[param.name] = ann(value) except Exception as ex: msg = f"Cannot cast '{param.name}' <{value}> to {ann}" raise ValueError(msg) from ex > return fun(*ba.args, **ba.kwargs) tests/utils/bdd_utils.py:78: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ selenium = {'browser_user1': <selenium.webdriver.chrome.webdriver.WebDriver (session="f5002583782501cdb814f801293e9241")>, 'space_owner_browser': <selenium.webdriver.chrome.webdriver.WebDriver (session="7758058bf57c11cd1e5d71354db1d3fc")>} browser_id = 'browser_user1', item_name = 'dir1' tmp_memory = defaultdict(<class 'dict'>, {'user1': {'shares': {}, 'spaces': {}, 'groups': {}, 'mailbox': {}, 'oz': {}, 'window': {'...': {'modal': None}, 'file_browser': <tests.gui.utils.oneprovider.file_browser._FileBrowser object at 0x7fdb174561c0>}}) op_container = <class 'tests.gui.utils.oneprovider.OPLoggedIn'> which_browser = 'file browser' > ??? <decorator-gen-325>:2: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ fun = <function click_and_press_enter_on_item_in_browser at 0x7fdb1799d790> args = ({'browser_user1': <selenium.webdriver.chrome.webdriver.WebDriver (session="f5002583782501cdb814f801293e9241")>, 'spac...le_browser._FileBrowser object at 0x7fdb174561c0>}}), <class 'tests.gui.utils.oneprovider.OPLoggedIn'>, 'file browser') kwargs = {}, now = 1685564820.4036021, limit = 1685564835.4036021 i = 1685564835.474248 @decorator def wrapper(fun, *args, **kwargs): now = time() limit, i = (now + timeout, now) if timeout else (attempts, 0) while i < limit: try: result = fun(*args, **kwargs) except exceptions: sleep(interval) i = time() if timeout else i+1 continue else: return result > return fun(*args, **kwargs) tests/utils/utils.py:95: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ selenium = {'browser_user1': <selenium.webdriver.chrome.webdriver.WebDriver (session="f5002583782501cdb814f801293e9241")>, 'space_owner_browser': <selenium.webdriver.chrome.webdriver.WebDriver (session="7758058bf57c11cd1e5d71354db1d3fc")>} browser_id = 'browser_user1', item_name = 'dir1' tmp_memory = defaultdict(<class 'dict'>, {'user1': {'shares': {}, 'spaces': {}, 'groups': {}, 'mailbox': {}, 'oz': {}, 'window': {'...': {'modal': None}, 'file_browser': <tests.gui.utils.oneprovider.file_browser._FileBrowser object at 0x7fdb174561c0>}}) op_container = <class 'tests.gui.utils.oneprovider.OPLoggedIn'> which_browser = 'file_browser' @wt(parsers.parse('user of {browser_id} clicks and presses enter on item named' ' "{item_name}" in {which_browser}')) @repeat_failed(timeout=WAIT_BACKEND) def click_and_press_enter_on_item_in_browser(selenium, browser_id, item_name, tmp_memory, op_container, which_browser='file browser'): which_browser = transform(which_browser) > browser = tmp_memory[browser_id][which_browser] E KeyError: 'file_browser' tests/gui/steps/oneprovider/browser.py:23: KeyError During handling of the above exception, another exception occurred: web_elem_root = <selenium.webdriver.remote.webelement.WebElement (session="f5002583782501cdb814f801293e9241", element="623ddd94-ae43-4ba2-a865-df0aea163eeb")> css_sel = '.toolbar-buttons .file-action-newDirectory' err_msg = 'no item found in file browser in Oneprovider page' def find_web_elem(web_elem_root, css_sel, err_msg): try: _scroll_to_css_sel(web_elem_root, css_sel) > item = web_elem_root.find_element_by_css_selector(css_sel) tests/gui/utils/generic.py:102: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <selenium.webdriver.remote.webelement.WebElement (session="f5002583782501cdb814f801293e9241", element="623ddd94-ae43-4ba2-a865-df0aea163eeb")> css_selector = '.toolbar-buttons .file-action-newDirectory' def find_element_by_css_selector(self, css_selector): """Finds element within this element's children by CSS selector. :Args: - css_selector - CSS selector string, ex: 'a.nav#home' :Returns: - WebElement - the element if it was found :Raises: - NoSuchElementException - if the element wasn't found :Usage: element = element.find_element_by_css_selector('#foo') """ > return self.find_element(by=By.CSS_SELECTOR, value=css_selector) /usr/local/lib/python3.8/dist-packages/selenium/webdriver/remote/webelement.py:430: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <selenium.webdriver.remote.webelement.WebElement (session="f5002583782501cdb814f801293e9241", element="623ddd94-ae43-4ba2-a865-df0aea163eeb")> by = 'css selector', value = '.toolbar-buttons .file-action-newDirectory' def find_element(self, by=By.ID, value=None): """ Find an element given a By strategy and locator. Prefer the find_element_by_* methods when possible. :Usage: element = element.find_element(By.ID, 'foo') :rtype: WebElement """ if self._w3c: if by == By.ID: by = By.CSS_SELECTOR value = '[id="%s"]' % value elif by == By.TAG_NAME: by = By.CSS_SELECTOR elif by == By.CLASS_NAME: by = By.CSS_SELECTOR value = ".%s" % value elif by == By.NAME: by = By.CSS_SELECTOR value = '[name="%s"]' % value > return self._execute(Command.FIND_CHILD_ELEMENT, {"using": by, "value": value})['value'] /usr/local/lib/python3.8/dist-packages/selenium/webdriver/remote/webelement.py:653: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <selenium.webdriver.remote.webelement.WebElement (session="f5002583782501cdb814f801293e9241", element="623ddd94-ae43-4ba2-a865-df0aea163eeb")> command = 'findChildElement' params = {'id': '623ddd94-ae43-4ba2-a865-df0aea163eeb', 'sessionId': 'f5002583782501cdb814f801293e9241', 'using': 'css selector', 'value': '.toolbar-buttons .file-action-newDirectory'} def _execute(self, command, params=None): """Executes a command against the underlying HTML element. Args: command: The name of the command to _execute as a string. params: A dictionary of named parameters to send with the command. Returns: The command's JSON response loaded into a dictionary object. """ if not params: params = {} params['id'] = self._id > return self._parent.execute(command, params) /usr/local/lib/python3.8/dist-packages/selenium/webdriver/remote/webelement.py:628: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <selenium.webdriver.chrome.webdriver.WebDriver (session="f5002583782501cdb814f801293e9241")> driver_command = 'findChildElement' params = {'id': '623ddd94-ae43-4ba2-a865-df0aea163eeb', 'using': 'css selector', 'value': '.toolbar-buttons .file-action-newDirectory'} def execute(self, driver_command, params=None): """ Sends a command to be executed by a command.CommandExecutor. :Args: - driver_command: The name of the command to execute as a string. - params: A dictionary of named parameters to send with the command. :Returns: The command's JSON response loaded into a dictionary object. """ if self.session_id is not None: if not params: params = {'sessionId': self.session_id} elif 'sessionId' not in params: params['sessionId'] = self.session_id params = self._wrap_value(params) response = self.command_executor.execute(driver_command, params) if response: > self.error_handler.check_response(response) /usr/local/lib/python3.8/dist-packages/selenium/webdriver/remote/webdriver.py:320: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x7fdb17460370> response = {'status': 404, 'value': '{"value":{"error":"no such element","message":"no such element: Unable to locate element: {\...\\n#18 0x55c67650e3bf \\u003Cunknown>\\n#19 0x55c676528abe \\u003Cunknown>\\n#20 0x7fad6be09609 \\u003Cunknown>\\n"}}'} def check_response(self, response): """ Checks that a JSON response from the WebDriver does not have an error. :Args: - response - The JSON response from the WebDriver server as a dictionary object. :Raises: If the response contains an error message. """ status = response.get('status', None) if status is None or status == ErrorCode.SUCCESS: return value = None message = response.get("message", "") screen = response.get("screen", "") stacktrace = None if isinstance(status, int): value_json = response.get('value', None) if value_json and isinstance(value_json, basestring): import json try: value = json.loads(value_json) if len(value.keys()) == 1: value = value['value'] status = value.get('error', None) if status is None: status = value["status"] message = value["value"] if not isinstance(message, basestring): value = message message = message.get('message') else: message = value.get('message', None) except ValueError: pass exception_class = ErrorInResponseException if status in ErrorCode.NO_SUCH_ELEMENT: exception_class = NoSuchElementException elif status in ErrorCode.NO_SUCH_FRAME: exception_class = NoSuchFrameException elif status in ErrorCode.NO_SUCH_WINDOW: exception_class = NoSuchWindowException elif status in ErrorCode.STALE_ELEMENT_REFERENCE: exception_class = StaleElementReferenceException elif status in ErrorCode.ELEMENT_NOT_VISIBLE: exception_class = ElementNotVisibleException elif status in ErrorCode.INVALID_ELEMENT_STATE: exception_class = InvalidElementStateException elif status in ErrorCode.INVALID_SELECTOR \ or status in ErrorCode.INVALID_XPATH_SELECTOR \ or status in ErrorCode.INVALID_XPATH_SELECTOR_RETURN_TYPER: exception_class = InvalidSelectorException elif status in ErrorCode.ELEMENT_IS_NOT_SELECTABLE: exception_class = ElementNotSelectableException elif status in ErrorCode.ELEMENT_NOT_INTERACTABLE: exception_class = ElementNotInteractableException elif status in ErrorCode.INVALID_COOKIE_DOMAIN: exception_class = InvalidCookieDomainException elif status in ErrorCode.UNABLE_TO_SET_COOKIE: exception_class = UnableToSetCookieException elif status in ErrorCode.TIMEOUT: exception_class = TimeoutException elif status in ErrorCode.SCRIPT_TIMEOUT: exception_class = TimeoutException elif status in ErrorCode.UNKNOWN_ERROR: exception_class = WebDriverException elif status in ErrorCode.UNEXPECTED_ALERT_OPEN: exception_class = UnexpectedAlertPresentException elif status in ErrorCode.NO_ALERT_OPEN: exception_class = NoAlertPresentException elif status in ErrorCode.IME_NOT_AVAILABLE: exception_class = ImeNotAvailableException elif status in ErrorCode.IME_ENGINE_ACTIVATION_FAILED: exception_class = ImeActivationFailedException elif status in ErrorCode.MOVE_TARGET_OUT_OF_BOUNDS: exception_class = MoveTargetOutOfBoundsException elif status in ErrorCode.JAVASCRIPT_ERROR: exception_class = JavascriptException elif status in ErrorCode.SESSION_NOT_CREATED: exception_class = SessionNotCreatedException elif status in ErrorCode.INVALID_ARGUMENT: exception_class = InvalidArgumentException elif status in ErrorCode.NO_SUCH_COOKIE: exception_class = NoSuchCookieException elif status in ErrorCode.UNABLE_TO_CAPTURE_SCREEN: exception_class = ScreenshotException elif status in ErrorCode.ELEMENT_CLICK_INTERCEPTED: exception_class = ElementClickInterceptedException elif status in ErrorCode.INSECURE_CERTIFICATE: exception_class = InsecureCertificateException elif status in ErrorCode.INVALID_COORDINATES: exception_class = InvalidCoordinatesException elif status in ErrorCode.INVALID_SESSION_ID: exception_class = InvalidSessionIdException elif status in ErrorCode.UNKNOWN_METHOD: exception_class = UnknownMethodException else: exception_class = WebDriverException if value == '' or value is None: value = response['value'] if isinstance(value, basestring): if exception_class == ErrorInResponseException: raise exception_class(response, value) raise exception_class(value) if message == "" and 'message' in value: message = value['message'] screen = None if 'screen' in value: screen = value['screen'] stacktrace = None if 'stackTrace' in value and value['stackTrace']: stacktrace = [] try: for frame in value['stackTrace']: line = self._value_or_default(frame, 'lineNumber', '') file = self._value_or_default(frame, 'fileName', '<anonymous>') if line: file = "%s:%s" % (file, line) meth = self._value_or_default(frame, 'methodName', '<anonymous>') if 'className' in frame: meth = "%s.%s" % (frame['className'], meth) msg = " at %s (%s)" msg = msg % (meth, file) stacktrace.append(msg) except TypeError: pass if exception_class == ErrorInResponseException: raise exception_class(response, message) elif exception_class == UnexpectedAlertPresentException: alert_text = None if 'data' in value: alert_text = value['data'].get('text') elif 'alert' in value: alert_text = value['alert'].get('text') raise exception_class(message, screen, stacktrace, alert_text) > raise exception_class(message, screen, stacktrace) E selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".toolbar-buttons .file-action-newDirectory"} E (Session info: chrome=104.0.5112.79) /usr/local/lib/python3.8/dist-packages/selenium/webdriver/remote/errorhandler.py:242: NoSuchElementException During handling of the above exception, another exception occurred: request = <FixtureRequest for <Function 'test_create_subdirectory[1oz_1op_deployed-group-group1-fails-all except [data:traverse directory]]'>> @pytest.mark.usefixtures(*function_args) def scenario_wrapper(request): > _execute_scenario(feature, scenario, request, encoding) /usr/local/lib/python3.8/dist-packages/pytest_bdd/scenario.py:227: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/local/lib/python3.8/dist-packages/pytest_bdd/scenario.py:189: in _execute_scenario _execute_step_function(request, scenario, step, step_func) /usr/local/lib/python3.8/dist-packages/pytest_bdd/scenario.py:130: in _execute_step_function step_func(**kwargs) tests/utils/bdd_utils.py:78: in wrapper return fun(*ba.args, **ba.kwargs) tests/gui/meta_steps/oneprovider/data.py:159: in create_item_in_op_gui _open_menu_for_item_in_file_browser() tests/gui/meta_steps/oneprovider/data.py:152: in _open_menu_for_item_in_file_browser click_button_from_file_browser_menu_bar(browser_id, button, tmp_memory) tests/utils/bdd_utils.py:78: in wrapper return fun(*ba.args, **ba.kwargs) <decorator-gen-361>:2: in click_button_from_file_browser_menu_bar ??? tests/utils/utils.py:95: in wrapper return fun(*args, **kwargs) tests/gui/steps/oneprovider/data_tab.py:79: in click_button_from_file_browser_menu_bar getattr(file_browser, transform(button)).click() tests/gui/utils/core/web_elements.py:58: in __get__ elem = super(WebItem, self).__get__(instance, owner) tests/gui/utils/core/web_elements.py:28: in __get__ return find_web_elem(instance.web_elem, self.css_sel, _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ web_elem_root = <selenium.webdriver.remote.webelement.WebElement (session="f5002583782501cdb814f801293e9241", element="623ddd94-ae43-4ba2-a865-df0aea163eeb")> css_sel = '.toolbar-buttons .file-action-newDirectory' err_msg = 'no item found in file browser in Oneprovider page' def find_web_elem(web_elem_root, css_sel, err_msg): try: _scroll_to_css_sel(web_elem_root, css_sel) item = web_elem_root.find_element_by_css_selector(css_sel) except NoSuchElementException: with suppress(TypeError): err_msg = err_msg() > raise RuntimeError(err_msg) E RuntimeError: no item found in file browser in Oneprovider page tests/gui/utils/generic.py:106: RuntimeError