title: Python NameError: name 'ElementNotVisibleException' is not defined with Selenium
body: <p>Why am I receiving this error using Python and Selenium and how can I fix it?</p>
  
  <pre><code>NameError: name 'ElementNotVisibleException' is not defined
  </code></pre>
  
  <p>It occurs when running the following script from this tutorial <a href="http://www.marinamele.com/selenium-tutorial-web-scraping-with-selenium-and-python" rel="nofollow noreferrer">http://www.marinamele.com/selenium-tutorial-web-scraping-with-selenium-and-python</a> in Python3.5</p>
  
  <pre><code>import time
  from selenium import webdriver
  from selenium.webdriver.common.by import By
  from selenium.webdriver.support.ui import WebDriverWait
  from selenium.webdriver.support import expected_conditions as EC
  from selenium.common.exceptions import TimeoutException
  
  
  def init_driver():
      driver = webdriver.Firefox()
      driver.wait = WebDriverWait(driver, 5)
      return driver
  
  
  def lookup(driver, query):
      driver.get("http://www.google.com")
      try:
          box = driver.wait.until(EC.presence_of_element_located(
              (By.NAME, "q")))
          button = driver.wait.until(EC.element_to_be_clickable(
              (By.NAME, "btnK")))
          box.send_keys(query)
          try:
              button.click()
          except ElementNotVisibleException:
              button = driver.wait.until(EC.visibility_of_element_located(
                  (By.NAME, "btnG")))
              button.click()
      except TimeoutException:
          print("Box or Button not found in google.com")
  
  
  if __name__ == "__main__":
      driver = init_driver()
      lookup(driver, "Selenium")
      time.sleep(5)
      driver.quit()
  </code></pre>
  
  <p>I've looked around the web for answers and while I've found similar questions, I haven't found answers that have helped me resolve this issue. </p>