2015-11-04 3 views
-2

J'ai un scénario de test dans lequel j'ai plus de 30 étapes, dans toutes les étapes que je demande à l'application d'attendre (60 secondes) tous les éléments de la page, à cause de cela, il a fallu plus de temps pour l'exécution.Le sélénium avec le code C# a pris plus de temps que prévu pour l'exécution du scénario de test

Ici, j'ai besoin de vous pour aider à la mise au point.

+0

Alors, quel est le problème? Si vous attendez 60 secondes à chaque fois, bien sûr, il faut plus de temps d'exécution. – Camo

+0

Il y a 2 façons d'utiliser waitenium, celle que vous utilisez et comment? –

+0

Vous ne devriez pas avoir besoin d'attendre après chaque étape et cela ne devrait certainement pas être 60 * chaque fois. Je n'ai aucune idée de la façon dont nous sommes censés vous aider si vous ne nous avez pas montré de code du tout. – JeffC

Répondre

1

Il existe plusieurs façons de réaliser des attentes avec Selenium.

Thread.Sleep

Thread.Sleep est une attente statique et il est un bon moyen d'utiliser dans les scripts comme il est le sommeil sans condition.

Thread.Sleep(2000); // this will wait for 2000 milliseconds 

Waits explicites

Une attente explicite d'attente pour une certaine condition de se produire avant de poursuivre. Par exemple, il peut être utilisé lorsque l'on veut vérifier la visibilité d'un élément avant d'y lancer des actions.

WebDriver driver = new FirefoxDriver(); 
driver.get("http://www.google.com"); 
WebElement DynamicElement = (new WebDriverWait(driver, 10)).until(ExpectedConditions.presenceOfElementLocated(By.id("DynamicElement"))); 

Implicite Attendez

Implicite attente est utilisé dans les cas où l'WebDriver ne peut pas localiser un objet immédiatement en raison de son indisponibilité. WebDriver attendra un temps d'attente implicite spécifié et n'essaiera pas de retrouver l'élément pendant la période spécifiée.

Une fois la limite de temps spécifiée franchie, le pilote web essaiera à nouveau de rechercher l'élément une dernière fois. En cas de succès, il procède à l'exécution; en cas d'échec, il émet une exception.

WebDriver driver = new FirefoxDriver(); 
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
driver.get("http://google.com"); 
WebElement DynamicElement = driver.findElement(By.id("DynamicElement")); 

Wait Courant

Un exemple FluentWait définit la quantité maximale de temps d'attente pour une condition d'avoir lieu, ainsi que la fréquence avec laquelle de vérifier l'existence de la condition de l'objet.

Wait wait = new FluentWait(driver).withTimeout(60, SECONDS).pollingEvery(10, SECONDS) .ignoring(NoSuchElementException.class); 
WebElement dynamicelement = wait.until(new Function<webdriver,webElement>(){ 

public WebElement apply(WebDriver driver){ 
    return driver.findElement(By.id("dynamicelement")); 
    } 

}); 

Vous pouvez utiliser n'importe quelle méthode adaptée à votre situation.