Get element that contains <text> either by text or by attribute value.

        Note: if timeout is 0, this function will not wait for the element(s) to become present.

        :param locator: locator tuple or list of WebElements
        :param text: text that the element should contain
        :param params: (optional) locator parameters
        :param timeout: (optional) time to wait for text (default: self._explicit_wait)
        :param visible: (optional) if the element should also be visible (default: False)
        :return: WebElement instance

def get_element_with_text(self, locator, text, params=None, timeout=None, visible=False):
        """
        Get element that contains <text> either by text or by attribute value.

        Note: if timeout is 0, this function will not wait for the element(s) to become present.

        :param locator: locator tuple or list of WebElements
        :param text: text that the element should contain
        :param params: (optional) locator parameters
        :param timeout: (optional) time to wait for text (default: self._explicit_wait)
        :param visible: (optional) if the element should also be visible (default: False)
        :return: WebElement instance
        """
        if timeout is None:
            timeout = self._explicit_wait

        @wait(exceptions=ElementNotVisibleException, timeout=timeout)
        def _wait_for_text():
            return self.is_element_with_text_present(locator, text, params, visible)

        msg = "Element with type <{}>, locator <{}> and text <{text}> was never located!".format(
            *locator, text=text) if not isinstance(locator, list) else \
            "None of the elements had the text: {}".format(text)

        if timeout == 0:
            return self.is_element_with_text_present(locator, text, params, visible)

        try:
            return _wait_for_text()
        except RuntimeError as e:
            LOGGER.debug(e)
            raise NoSuchElementException(msg)