code: def send_keys(self, value, **kwargs):
          self.debug_log("Sending keys")
  
          highlight = kwargs.get(
              'highlight',
              BROME_CONFIG['highlight']['highlight_when_element_receive_keys']  # noqa
          )
          
  
          if highlight:
              self.highlight(
                  style=BROME_CONFIG['highlight']['style_when_element_receive_keys']  # noqa
              )
  
          clear = kwargs.get('clear', False)
  
          if clear:
              self.clear()
  
          if self.pdriver.bot_diary:
              self.pdriver.bot_diary.add_auto_entry(
                  "I typed '%s' in" % value,
                  selector=self.selector._selector
              )
  
          try:
              self._element.send_keys(value)
          except exceptions.StaleElementReferenceException as e:
              self.debug_log(
                  "send_keys exception StaleElementReferenceException: %s" % e
              )
              sleep(2)
              self._element = self.pdriver.find(self.selector._selector)
              self._element.send_keys(value)
          except (
                  exceptions.InvalidElementStateException,
                  exceptions.WebDriverException
                  ) as e:
              self.debug_log("send_keys exception: %s" % e)
              sleep(2)
              self._element.send_keys(value)
  
          return True
docs: wait_until_clickable = kwargs.get(
              'wait_until_clickable',
              BROME_CONFIG['proxy_element']['wait_until_clickable']
          )
  
          if wait_until_clickable:
              # TODO manage the raise exception better
              self.pdriver.wait_until_clickable(
                  self.selector._selector,
                  raise_exception=True
              )