2016-09-15 2 views
1

Je dois redémarrer le navigateur après chaque "it" (test), pour cette raison, j'écris "restartBrowserBetweenTests: true" dans le fichier protractor.config. Maintenant, après le premier "it" (test) terminé, navigateur fermé et ouvert à nouveau (site Web ouvert que j'écris dans "beforeEach", mais le prochain "it" (test) n'est pas exécutéProtractor "restartBrowserBetweenTests: true" redémarrer le navigateur, mais ne pas lancer de test après cela

Ce que je fais mal? être heureux pour tout conseil

J'utilise "protractor":..! "2.5.1"

Merci

Ajouté:

beforeEach(function() { 
    browserUtil.navigateTo(browserUtil.url.main); 
    loginPage.loginAsSample(); 
}); 

afterEach(function(){ 
    browserUtil.deleteCookies(); 
}); 

it("'Delete' button is inactive if there are no projects in the list", function() { 
    projectPage.clickOnProjectButton(); 

    expect(projectPage.isProjectPageFormVisibility(true)).toBe(true); 
    expect(projectPage.isDeleteBtnDisable()).toBe(true); 
}); 

it("Create new project with template 'A'", function() { 
    projectPage.clickOnNewProjectBtn(); 
    projectPage.clickOnAProject(); 
    projectPage.clickOnOkBtnProject(); 

    expect(projectPage.isOpenedProjectVisibility(true)).toBe(true); 
}); 
+0

pouvez-vous s'il vous plaît ping la spécification code qui contient le() et beforeEach() –

+0

J'ai ajouté, s'il vous plaît regardez. Sans le redémarrage du navigateur, tout fonctionne correctement. –

+0

Pouvez-vous ajouter une logique pour se déconnecter de l'application dans la méthode afterEach() et essayer cela fonctionnera –

Répondre

1

Je ne l'ai jamais utilisais restartBrowserBetweenTests: true, mais travaux pour moi:

à protractor.conf, enlever restartBrowserBetweenTests: true

dans test.spec.js, et modifier beforeEachafterEach

beforeEach(function() { 
    browser.get(browserUtil.url.main); 
}); 

afterEach(function() { 
    browser.manage().deleteAllCookies(); 
}); 

Etant donné que vous êtes en utilisant une structure d'objet page pour vos tests, vous pourriez/voudriez encapsuler browser.get(browser.browserUtil.url.main); dans votre objet page.

Où Projectpage est défini, je rajouterais:

this.refreshPage = function() { 
    browser.get(browserUtil.url.main); 
}; 

Si vous allez avec cette approche, vous changeriez l'appel en beforeEach à:

beforeEach(function() { 
    projectPage.refresh(); 
}); 
+0

Merci pour votre réponse! Dans mon browserUtils.js j'ai écrit des méthodes pour browserUtil.deleteCookies() et browserUtil.navigateTo() comme vous l'avez montré. Mais si mon test échoue en raison d'une erreur inattendue et que je veux actualiser la page, mon navigateur (chrome) empile avec la popup "Voulez-vous quitter ce site?" et tous les tests après que cette popup échoue. C'est pourquoi je veux fermer et ouvrir le navigateur après chaque test, et pas seulement actualiser la page. Je n'ai aucune idée de comment résoudre ce problème avec une autre méthode. –