code: def get_descendants(self, el, tags=True, no_iframe=False):
          
  
          if not no_iframe or not self.is_iframe(el):
              next_good = None
              for child in el.descendants:
  
                  if next_good is not None:
                      if child is not next_good:
                          continue
                      next_good = None
  
                  is_tag = self.is_tag(child)
  
                  if no_iframe and is_tag and self.is_iframe(child):
                      if child.next_sibling is not None:
                          next_good = child.next_sibling
                      else:
                          last_child = child
                          while self.is_tag(last_child) and last_child.contents:
                              last_child = last_child.contents[-1]
                          next_good = last_child.next_element
                      yield child
                      if next_good is None:
                          break
                      # Coverage isn't seeing this even though it's executed
                      continue  # pragma: no cover
  
                  if not tags or is_tag:
                      yield child
docs: Get descendants.