title: There is error "Invalid locator values passed in" in case we use find_element instead of find_element_by
body: <p>I'm using Python-Webdriver to automate a "click" action. Here is my code:</p>
  
  <pre><code>from selenium.webdriver.common.by import By
  from selenium import webdriver
  from selenium.common.exceptions import InvalidSelectorException
  
  
  LOGIN_BUTTON = (By.XPATH, '//a[contains(@class,"aui-nav-link login-link")]')
  NEWS_OPTION = (By.ID, 'blq-nav-news')
  
  driver = webdriver.Chrome()
  driver.implicitly_wait(30)
  driver.get("http://bbc.co.uk/")
  myDynamicElement = driver.find_element(NEWS_OPTION)
  myDynamicElement.click()
  </code></pre>
  
  <p>The console generates an exception as below</p>
  
  <pre><code>    raise InvalidSelectorException("Invalid locator values passed in")
  selenium.common.exceptions.InvalidSelectorException: Message: Invalid locator values passed in
  </code></pre>
  
  <p>But, if I change the line </p>
  
  <blockquote>
    <p>"myDynamicElement = driver.find_element(NEWS_OPTION) "</p>
  </blockquote>
  
  <p>to </p>
  
  <blockquote>
    <p>"myDynamicElement = driver.find_element_by_id('blq-nav-news') "</p>
  </blockquote>
  
  <p>, there is no exception and the script works as expected.</p>
  
  <p>I figured out the root cause is we don't use </p>
  
  <blockquote>
    <p>find_element_by_*</p>
  </blockquote>
  
  <p>. So I'd like to know this is limitation on Python-Webdriver ? whether we have a solution to fix my issue without changing my code as I did.</p>