Java's FluentWait in Python
Question: In java selenium-webdriver package, there is a
[`FluentWait`](https://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/support/ui/FluentWait.html)
class:

> Each FluentWait instance defines the maximum amount of time to wait for a
> condition, as well as the frequency with which to check the condition.
> Furthermore, the user may configure the wait to ignore specific types of
> exceptions whilst waiting, such as NoSuchElementExceptions when searching
> for an element on the page.

In other words, it is something more than [implicit and explicit
wait](http://www.toolsqa.com/selenium-webdriver/implicit-explicit-n-fluent-
wait/), gives you more control for waiting for an element. It can be very
handy and definitely has use cases.

Is there anything similar in [python selenium package](http://selenium-
python.readthedocs.org/), or should I implement it myself?

(I've looked through documentation for [Waits](http://selenium-
python.readthedocs.org/waits.html) \- nothing there).


Answer: I believe you can do this with Python, however it isn't packaged as simply as
a FluentWait class. Some of this was covered in the documentation you provided
by not extensively.

The WebDriverWait class has optional arguments for timeout, poll_frequency,
and ignored_exceptions. So you could supply it there. Then combine it with an
Expected Condition to wait for elements for appear, be clickable, etc... Here
is an example:

    
    
    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 *
    
    driver = webdriver.Firefox()
    # Load some webpage
    wait = WebDriverWait(driver, 10, poll_frequency=1, ignored_exceptions=[ElementNotVisibleException, ElementNotSelectableException])
    element = wait.until(EC.element_to_be_clickable((By.XPATH, "//div")))
    

Obviously you can combine the wait/element into one statement but I figured
this way you can see where this is implemented.

