Wait for an Ajax call to complete with Selenium 2 WebDriver

You could also use the Selenium explicit wait here. Then you don't need to handle timeout yourself

public void WaitForAjax()
{
    var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(15));
    wait.Until(d => (bool)(d as IJavaScriptExecutor).ExecuteScript("return jQuery.active == 0"));
}

If you're using jQuery for your ajax requests, you can wait until the jQuery.active property is zero. Other libraries might have similar options.

public void WaitForAjax()
{
    while (true) // Handle timeout somewhere
    {
        var ajaxIsComplete = (bool)(driver as IJavaScriptExecutor).ExecuteScript("return jQuery.active == 0");
        if (ajaxIsComplete)
            break;
        Thread.Sleep(100);
    }
}