title: Python Selenium WebDriver. Writing my own expected condition
body: <p>I'm trying to write my own expected condition. What I need... I have an iframe. and I also have an image in it. I want to continue processing when image's scr will change. What I did:  </p>
  
  <pre><code>class url_changed_condition(object):
      '''
      Checks whether url in iframe has changed or not
      '''
      def __init__(self, urls):
          self._current_url, self._new_url = urls
  
      def __call__(self, ignored):
          return self._current_url != self._new_url  
  </code></pre>
  
  <p>and later in the code I have:  </p>
  
  <pre><code>def process_image(self, locator, current_url):
      try:
          WebDriverWait(self.driver, 10).until(ec.presence_of_element_located((By.TAG_NAME, u"iframe")))
          iframe = self.driver.find_element(*locator)
          if iframe:
              print "Iframe found!"
          self.driver.switch_to_frame(iframe)
          WebDriverWait(self.driver, 10).until(ec.presence_of_element_located((By.XPATH, u"//div")))
  
          # WebDriverWait(self.driver, 10).until(
              # url_changed_condition(
                  # (current_url, self.driver.find_element(By.XPATH, u"//a/img").get_attribute(u"src"))))
  
          img_url = self.driver.find_element(By.XPATH, u"//a/img").get_attribute(u"src")
          print img_url
          self.search_dict[self._search_item].append(img_url)
          self.driver.switch_to_default_content()
      except NoSuchElementException as NSE:
          print "iframe not found! {0}".format(NSE.msg)
      except:
          print "something went wrong"
          import traceback
          import sys
          type_, value_, trace_ = sys.exc_info()
          print type_, value_
          print traceback.format_tb(trace_)
      finally:
          return current_url  
  </code></pre>
  
  <p>This code works, but returns the same url multiple times. The problem is when I uncomment <code>url_changed_condition</code> it falls with <code>TimeoutException</code> in<br>
  <code>(current_url, self.driver.find_element(By.XPATH, u"//a/img").get_attribute(u"src"))</code><br>
  The line below it works fine... I don't get it.</p>