code: def selenium_retry(target=None, retry=True):
      
  
      if isinstance(target, bool):
          # Decorator was called with a single boolean argument
          retry = target
          target = None
  
      def decorate(target):
          if isinstance(target, type):
              cls = target
              # Metaclass time.
              # We're going to generate a new subclass that:
              # a) mixes in RetryingSeleniumLibraryMixin
              # b) sets the initial value of `retry_selenium`
              return type(
                  cls.__name__,
                  (cls, RetryingSeleniumLibraryMixin),
                  {"retry_selenium": retry, "__doc__": cls.__doc__},
              )
          func = target
  
          @functools.wraps(func)
          def run_with_retry(self, *args, **kwargs):
              # Set the retry setting and run the original function.
              old_retry = self.retry_selenium
              self.retry = retry
              try:
                  return func(self, *args, **kwargs)
              finally:
                  # Restore the previous value
                  self.retry_selenium = old_retry
  
          set_pdb_trace()
          run_with_retry.is_selenium_retry_decorator = True
          return run_with_retry
  
      if target is None:
          # Decorator is being used with arguments
          return decorate
      else:
          # Decorator was used without arguments
          return decorate(target)
docs: Decorator to turn on automatic retries of flaky selenium failures.
  
      Decorate a robotframework library class to turn on retries for all
      selenium calls from that library:
  
          @selenium_retry
          class MyLibrary(object):
  
              # Decorate a method to turn it back off for that method
              @selenium_retry(False)
              def some_keyword(self):
                  self.selenium.click_button('foo')
  
      Or turn it off by default but turn it on for some methods
      (the class-level decorator is still required):
  
          @selenium_retry(False)
          class MyLibrary(object):
  
              @selenium_retry(True)
              def some_keyword(self):
                  self.selenium.click_button('foo')