code: def find_elements(self, by, value, view_cls=None):
          # type: (By, Any, Value) -> List[View]
          
          if view_cls is None:
              view_cls = View
  
          def get_elements():
              results = []
  
              try:
                  results = self.root.find_elements(by, value)
              except NoSuchElementException:
                  pass
              finally:
                  return results
  
          def get_element_at_index(i):
              return lambda: get_elements()[i]
  
          return [view_cls(get_element_at_index(i)) for i, element in enumerate(get_elements())]
docs: Find one or more elements matching condition
          :param by: Type of condition
          :param value: Condition value
          :param view_cls: Optional custom class to wrap returned elements
          :return: List of matching web elements wrapped in a view