Quelle est la meilleure approche pour les délais d'attente à l'aide de Sélénium à l'aide de Webdriver

J'ai couru dans un problème. Ma page web a un DropDownList de contrôle. Une fois le DropDownList les changements de la valeur (en sélectionnant une valeur différente), l'actualisation de la page et qu'elle rend le contenu.

Puis-je utiliser Thread.Sleep(2000); avant et FindElement.

Ma question: Quelle est la meilleure façon d'attendre le chargement de la page?

J'ai tellement de cas de Thread.Sleep(2000) dans mon code que je commence à penser que ce n'est pas la meilleure façon d'aborder le problème.

Voici mon code:

[TestInitialize()]
public void Setup()
{
    if (BaseIntegrationTest.browserType.Equals(BaseIntegrationTest.IE))
    {
        driver = new InternetExplorerDriver();
    }
    else if (BaseIntegrationTest.browserType.Equals(BaseIntegrationTest.CHROME))
    {
        //driver = new ChromeDriver();
    }
    else if (BaseIntegrationTest.browserType.Equals(BaseIntegrationTest.FIREFOX))
    {
        driver = new FirefoxDriver();
    }
}

Et la deuxième partie:

[TestMethod]
public void testVerifyData()
{
    //...................
    //...................
    driver.FindElement(By.XPath("//*[@id='ctl00_NavigationControl1_lnke']")).Click();

    Thread.Sleep(2000);

    //select from the dropdownlist.
    IWebElement catagory = driver.FindElement(By.Id("ctl00_ContentPlaceHolder1_Filter"));
    SelectElement selectCatagory = new SelectElement(catagory);
    selectCatagory.SelectByText("Employee");

    Thread.Sleep(2000);
    //...................
    //...................
}
InformationsquelleAutor Nick Kahn | 2012-08-14