2016-09-15 31 views
1

我需要重新啓動每一個「它」(測試)後,瀏覽器之後沒有運行測試,爲此我寫「restartBrowserBetweenTests:真正的」在protractor.config文件。現在在第一次「it」(測試)完成後,瀏覽器關閉並再次打開(打開我在「beforeEach」中寫入的網站,但是下一個「it」(測試)未運行)。很高興的任何建議量角器「restartBrowserBetweenTests:真正」重啓瀏覽器,但這

我使用 「量角器」:! 「2.5.1」

感謝

補充:

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

可以請你ping到規範代碼包含it()和beforeEach() –

+0

我加了,請看。 沒有瀏覽器重新啓動一切工作正常。 –

+0

你可以添加邏輯從afterEach()方法註銷應用程序,並嘗試它將工作 –

回答

1

我從來沒有使用restartBrowserBetweenTests: true,但這作品對我來說:

在protractor.conf

,刪除restartBrowserBetweenTests: true

在test.spec.js,修改beforeEachafterEach

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

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

是,你就可以利用頁面對象結構你的測試,你可以/想要將browser.get(browser.browserUtil.url.main);封裝到你的頁面對象中。

凡ProjectPage定義,我想補充:

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

如果你用這種方法去,你會改變beforeEach的號召:

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

謝謝你的答案! 在我browserUtils.js我已經寫方法browserUtil.deleteCookies()和browserUtil.navigateTo()像你這樣的表現。 但是,如果我的測試因爲意外錯誤而失敗,並且我想刷新頁面,則我的瀏覽器(chrome)堆疊彈出「您想離開本網站嗎?」並在彈出失敗後進行所有測試。這就是爲什麼我想在每次測試後關閉並打開瀏覽器,而不僅僅是刷新頁面。我不知道如何用另一種方法解決這個問題。 –