Le sélénium web le pilote n'est pas en mesure de fermer firefox exemple, si un cas de Test est manqué
je les gens,
je suis en utilisant junit avec le sélénium web pilote 2.28.
le problème est que si je lance un test réussi, le site des lecteurs est en mesure de fermer firefox instance, mais lorsqu'un test échoue, le sélénium web pilote n'est pas en mesure de fermer firefox.
j'utilise FF 15.0.1 avec selenium-server-standalone-2.28.0.jar.
veuillez répondre
merci
Sahil
private void startWebdriver() throws UIException{
//2) Prevent re-use.
if(UIHandlerWD.this.profile == null)
throw new
UIException(
UIException.Code.UI,
"Webdriver instance cannot be instantiated."
);
//3) Configure Selenium Webdriver.
if (this.profile.browserType.equalsIgnoreCase("*firefox")){
FirefoxProfile fProfile = new FirefoxProfile();
//profile.SetPreference("network.http.phishy-userpass-length", 255);
fProfile.setAcceptUntrustedCertificates(true);
DesiredCapabilities dc = DesiredCapabilities.firefox();
dc.setJavascriptEnabled(true);
dc.setCapability(FirefoxDriver.PROFILE, fProfile);
//this.webdriver = new FirefoxDriver(dc);
this.webdriver = new FirefoxDriver(dc);
}
else if (this.profile.browserType=="INTERNETEXPLORER")
this.webdriver = new InternetExplorerDriver();
else
throw new
UIException(
UIException.Code.UI,
"Unknown browser type '" + this.profile.browserType +"'."
);
//4) Start Webdriver.
this.webdriver.get(this.profile.getURL().toString());
this.webdriver.manage().timeouts().
implicitlyWait(5, TimeUnit.SECONDS);
this.webdriver.manage().timeouts().
pageLoadTimeout(this.profile.timeout, TimeUnit.SECONDS);
}
void stopWebdriver() {
if(this.webdriver != null){
try{
Thread.sleep(5000);
}
catch (Exception e) {
//TODO: handle exception
}
this.webdriver.close();
}
this.webdriver = null;
this.profile = null;
}
Merci de partager un programme de la façon dont vous invocation de ces deux méthodes.
salut,j'ai été le débogage de la question, et c'est ce que j'ai découvert Quand je suis en cours d'exécution de l'ensemble de la classe puis le sélénium pas de clôture. Mais quand je suis de débogage dans le code, puis quand j'ai pas cours de de la "ce.webdriver.close();", puis le sélénium instance est capable de la fermer, je suis en utilisant eclipse indigo Version: Indigo Service Release 1 Build id: 20110916-0149
Vous pouvez utiliser JUnit annotations...Faire usage de
je suis à l'aide de @AfterClass pour arrêter le sélénium session, mais encore sa ne fonctionne pas
je suis déjà à l'aide de AfterClass pour arrêter le sélénium session, CODE fr l'appel de sélénium.stop() AfterClass public static void _afterJUnitTestCase() { previousCtx = TestContext.getContext(); TestContext.removeContext(); currentCase = null; } la Classe utilisée pour le sélénium .pour arrêter la fonction public static void removeContext() { //1) Arrêt de Sélénium, s'il est commencé. pour(UIWD de l'interface utilisateur: activeContext.uiHandlers.keySet()) activeContext.stopUI(ui); activeContext.uiHandlers.clear(); //2) Restaurer le contexte du système. activeContext = SYSTEM_CONTEXT; }
salut,j'ai été le débogage de la question, et c'est ce que j'ai découvert Quand je suis en cours d'exécution de l'ensemble de la classe puis le sélénium pas de clôture. Mais quand je suis de débogage dans le code, puis quand j'ai pas cours de de la "ce.webdriver.close();", puis le sélénium instance est capable de la fermer, je suis en utilisant eclipse indigo Version: Indigo Service Release 1 Build id: 20110916-0149
Vous pouvez utiliser JUnit annotations...Faire usage de
@Before for browser setup
, @Test for test code
et @After for the browser killing
.je suis à l'aide de @AfterClass pour arrêter le sélénium session, mais encore sa ne fonctionne pas
je suis déjà à l'aide de AfterClass pour arrêter le sélénium session, CODE fr l'appel de sélénium.stop() AfterClass public static void _afterJUnitTestCase() { previousCtx = TestContext.getContext(); TestContext.removeContext(); currentCase = null; } la Classe utilisée pour le sélénium .pour arrêter la fonction public static void removeContext() { //1) Arrêt de Sélénium, s'il est commencé. pour(UIWD de l'interface utilisateur: activeContext.uiHandlers.keySet()) activeContext.stopUI(ui); activeContext.uiHandlers.clear(); //2) Restaurer le contexte du système. activeContext = SYSTEM_CONTEXT; }
OriginalL'auteur user1863204 | 2013-01-28
Vous devez vous connecter pour publier un commentaire.
Ajouter
webdriver.quit()
à un@AfterClass
méthode.close() ferme la fenêtre active. Si la fenêtre active est la dernière fenêtre, il est fonctionnellement équivalent à l'exécution d'une quit().
Il n'a cependant besoin d'avoir un valide session active pour être en mesure de le faire. Si votre test a échoué que la session est sans doute mort, de sorte que lorsque vous appelez un close() il ne sait pas où envoyer la commande et lance une Exception.
quit() mettra fin à toutes les sessions et de l'arrêt de tous les clients, c'est essentiellement un nettoyage tout commande. Il sera également interdit de jeter des Exceptions si tous les clients/les sessions ont déjà été fermée/close.
Fermer ferme la fenêtre active et si c'est la dernière fenêtre va ensuite effectuer quit(). Il n'a cependant besoin d'avoir un valide session active pour être en mesure de le faire. Si votre test a échoué que la session est sans doute mort, de sorte que lorsque vous appelez un proche qu'il ne sait pas où envoyer la commande et ne pas faire n'importe quoi. Quittez va fermer tous les clients si il n'y a pas des sessions actives donc, si vous envoyez un quitter et n'ont pas de sessions actives, il va juste nettoyer.
ok, merci pour l'info
Si cela a résolu votre problème, vous pouvez le marquer comme réponse correcte 🙂
La bonne façon de remercier quelqu'un sur StackOverflow est d'accepter de leur réponse.
OriginalL'auteur Ardesco