If your application is AJAX heavy and if you are using PageFactory
along with PageObjects then you can use AjaxElementLocatorFactory[1].
This is useful for finding elements in general.
AjaxElementLocatorFactory factory = new
AjaxElementLocatorFactory(driver, 15/*TimeOut*/);
As of the Page to load, in my case, I am using jQuery.Active property
to make sure if the AJAX requests are complete or not. I have
something like below in my method. I am able to use jQuery object
because our application uses jQuery. If your application does not use
jQuery then perhaps you will have to find some other ways like
ImplicitlyWait or WebDriverWait etc
while(AJAXCompletesUntilCertainTimeOut){
if(((JavascriptExecutor)driver).executeScript("return
jQuery.active;").toString().equals("0")){
return true;
}
}
[1]
http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/
selenium/support/pagefactory/AjaxElementLocatorFactory.html