input: Write a python function to extract all visible text elements from a list of HTML elements. 
  assert extract_visible_text(["<style>some style</style>", "Hello", "<script>some script</script>", "World"]) == ["Hello", "World"]
  assert extract_visible_text(["<head>Header</head>", "<div>Content</div>", "<!-- Comment -->", "Visible Text"]) == ["Content", "Visible Text"]
  assert extract_visible_text(["<title>Title</title>", "Text"]) == ["Text"]
output: def extract_visible_text(html_elements):
      from bs4 import BeautifulSoup
      
      visible_text = []
      
      for element in html_elements:
          soup = BeautifulSoup(element, "html.parser")
          # If the element has no tags or only text content, add to visible_text
          if not soup.find() and soup.get_text(strip=True):
              visible_text.append(soup.get_text(strip=True))
          else:
              # Check if the tag is a script, style or any other non-visible tag
              if soup.name not in ['script', 'style', 'head', 'title']:
                  text = soup.get_text(strip=True)
                  if text:
                      visible_text.append(text)
      
      return visible_text