Selenium WebDriver: Couramment attendre fonctionne comme prévu, mais implicite d'attente ne sont pas

Je suis nouveau sur le Selenium WebDriver et essaie de comprendre la bonne façon "d'attendre" pour éléments à présenter.

Je suis en train de tester une page avec un tas de questions qui ont un bouton radio réponses. À mesure que vous sélectionnez des réponses, Javascript peut activer/désactiver certaines de vos questions sur la page.

Le problème semble être que le Sélénium est "en cliquant sur trop rapide" et de ne pas attendre pour le Javascript à la fin. J'ai essayé de résoudre ce problème de deux manières explicites attend résolu le problème. Plus précisément, cela fonctionne, et résout mon problème:

private static WebElement findElement(final WebDriver driver, final By locator, final int timeoutSeconds) {
    FluentWait<WebDriver> wait = new FluentWait<WebDriver>(driver)
            .withTimeout(timeoutSeconds, TimeUnit.SECONDS)
            .pollingEvery(500, TimeUnit.MILLISECONDS)
            .ignoring(NoSuchElementException.class);

    return wait.until(new Function<WebDriver, WebElement>() {
        public WebElement apply(WebDriver webDriver) {
            return driver.findElement(locator);
        }
    });
}

Cependant, je tiens à préfèrent à l'utilisation implicite de l'attendre au lieu de cela. J'ai mes pilotes web configuré comme ceci:

driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

Cela ne résout pas le problème et je reçois un NoSuchElementException. En outre, je ne suis pas d'avis à 10 secondes de pause: il suffit d'erreurs immédiatement. J'ai vérifié cette ligne dans le code est frappé avec un débogueur. Ce que je fais mal? Pourquoi ne implicitlyWait pas attendre que l'élément d'apparaître, mais FluentWait n'?

Remarque: Comme je l'ai mentionné, j'ai déjà un travail autour de, vraiment, je veux juste savoir pourquoi Implicite d'attente n'est pas la résolution de mon problème. Merci.

InformationsquelleAutor emulcahy | 2012-08-20