<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def wait_until_clickable(self, selector, **kwargs):
 """Wait until an element is clickable Args: selector (str):
 the selector used to find the element Kwargs: timeout (int) second before a timeout exception is raise raise_exception (bool) raise an exception or return a bool Returns: bool True if element is clickable before the timeout, False otherwise (raise_exception = False) Raises: this function might raise an exception depending on the raise_exception kwargs or the config proxy_driver:raise_exception """

        self.info_log("Waiting until clickable (%s)" % selector)

        timeout = kwargs.get(
            'timeout',
            BROME_CONFIG['proxy_driver']['default_timeout']
        )
        self.debug_log("effective timeout: %s" % timeout)

        raise_exception = kwargs.get(
            'raise_exception',
            BROME_CONFIG['proxy_driver']['raise_exception']
        )
        self.debug_log("effective raise_exception: %s" % raise_exception)

        _selector = Selector(self, selector)

        try:
            WebDriverWait(
                self._driver, timeout
            ).until(
                EC.element_to_be_clickable(
                    (getattr(By, _selector.find_by), _selector.get_selector()))
            )
            self.debug_log(
                "wait_until_clickable (%s): element is clickable" % _selector
            )
            return True
        except exceptions.TimeoutException:
            msg = "wait_until_clickable: element (%s) is still not clickable" % _selector  # noqa
            self.debug_log(msg)
            self.print_javascript_error()
            if raise_exception:
                if self.bot_diary:
                    self.bot_diary.add_auto_entry(
                        "I waited for the clickability of",
                        target=_selector.get_human_readable()
                    )
                raise exceptions.TimeoutException(msg)
            else:
                return False