title: Selenium - visibility_of_element_located: __init__() takes exactly 2 arguments (3 given)
body: <p>I am getting this error in my test code that uses Selenium Python Bindings:</p>
  
  <pre><code>&gt;           twitter_campaigns = wait.until(EC.visibility_of_element_located(By.CSS_SELECTOR, TWITTER_CAMPAIGNS))
  E           TypeError: __init__() takes exactly 2 arguments (3 given)
  </code></pre>
  
  <p>And this is what Im executing:</p>
  
  <pre><code>class TestTwitter(TestLogin, TestBuying):
  
      def setup(self, timeout=10):
          self.driver = webdriver.Firefox()
          self.driver.get(BASEURL)
          self.driver.implicitly_wait(timeout)
  
      def test_campaigns_loaded(self, timeout=10):
          self.signin_action()
          self.view_twitter_dashboard()
          self.select_brand()
          wait = WebDriverWait(self.driver, timeout)
          twitter_campaigns = wait.until(EC.visibility_of_element_located(By.CSS_SELECTOR, TWITTER_CAMPAIGNS))
          assert True == twitter_campaigns
  
      def teardown(self):
          self.driver.close()
  </code></pre>
  
  <p>So I'm wondering Why Im getting the above errors, on all the classes I haven't defined an <code>__init__()</code> method instead I defined a setUp and tearDown methods as pytest follow. Any ideas why is taking 3 args?</p>