2016-12-02 40 views
2

我們有一個應用程序,該應用程序有多個要驗證的功能。 我創建了幾個量角器規格來創建測試個別功能。應用程序要求用戶在訪問功能之前先登錄。爲此,我還有一個規格可以打開瀏覽器並登錄到應用程序。期望是,其他規格將使用此會話,該會話由登錄規範創建和驗證,用於驗證。 但是,只要登錄規範結束,瀏覽器會話就會關閉。量角器:如何在一個規格執行結束後繼續運行瀏覽器實例

當我從http://127.0.0.1:4444/wd/hub/static/resource/hub.html位置創建一個會話並將其放在屬性名爲seleniumSessionId下的conf.js文件中時,該會話不會關閉。 但我需要從登錄腳本創建此會話,以便創建會話並將其傳遞到conf.js文件中的手動工作可以刪除。

回答

1

我做的是,我在我的配置文件onPrepare()功能在那裏我做了記錄:

onPrepare: function() { 
    browser.driver.get(browser.params.url); 
    browser.driver.findElement(by.id('loginInput')).sendKeys('login'); 
    browser.driver.findElement(by.id('passwordInput')).sendKeys('password'); 
    browser.driver.findElement(by.id('submitButton')).click(); 
    return browser.driver.wait(function() { 
     return browser.driver.getCurrentUrl().then(function(url) { 
     return true; 
     }); 
    }, 30000); 
} 

如果由於某種原因,你的網站需要刷新頁面(這將是不可思議)後關閉會話,您可將此代碼移動到您的beforeEach()函數中,或者甚至在您的配置文件中將其附加到您的全局對象並在測試中的任意位置使用它。

global.loginToPage = function() { 
    browser.driver.get... 
} 

並在您的測試中稱它爲標準功能。

0

那麼你需要做的是通過會話ID:

protractor spec.js --seleniumSessionId=<session id> 

還有就是這量角器一個例子。在scripts/attachSession.js中,該文件向硒獨立服務器發出請求並創建一個新會話。會話創建後,它將運行量角器測試。由於您提供的會話是Protractor will not close down the session,因此您負責發送刪除會話請求。

另請注意,您可以添加seleniumSessionId標誌也可以是您的量角器配置中的屬性。

(好哇一個功能,我在今年年初寫了)之前

+0

感謝您的答覆。但我需要在一個規範中創建瀏覽器會話。它也應該繼續在其他規格。如果我在我的測試規範中調用腳本/ attachSession.js中定義的函數,在規範執行完成後它會保留。 –

+0

使用'seleniumSessionId',瀏覽器窗口永遠不會關閉。缺點是如果您遇到錯誤,您的其他測試可能會失敗,或者在遇到您的第一次失敗後可能會產生誤報。您也可以在beforeEach之前使用afterEach註銷登錄。缺點是你的測試需要更多時間。 – cnishina

0

認沽eeach功能登錄,然後把測試中的「它」塊

describe('tests', function() { 

beforeEach(function(done) { 

    loginPage.Login();  

}); 


    it('should test something', function() { 


    }); 
}); 
相關問題