2015-01-02 11 views
2

我試圖測試,一旦頁面完成完全載入頁面,做一個服務器端的RSA密鑰對生成,這需要5之間 - 秒20,我目前設立。在瀏覽器收到密鑰對之前,用戶不能進行任何操作。如何檢測的期望是否在茉莉花失敗/量角器

我已經使用browser.sleep(),但等待20秒如果在5生成密鑰對是煩人。我嘗試使用Protractor的evaluate()方法作爲while循環條件,但是evaluate()返回一個ElementFinder而不是參數的值。有沒有一種方法允許Jasmine/Protractor以相同的方式計算布爾值?Jasmine評估爲Be/toEqual/etc?

總之,

expect(controller.evaluate('data.step1.done')).toBe(true); 

計算一個布爾值,相當於評價的值()的自變量在角的範圍內,它比較針對‘真’。有沒有辦法使用該計算值或自己計算它?

+0

在瀏覽器端如何實現等待?最終用戶是否有任何指標? – alecxe

+0

@alecxe頁面內容的其餘部分使用ng-class =「{blurred:!data.step1.done}」模糊不清。以及使用ng-show和相同的Angular變量的一些元素。 –

回答

2

這裏的想法是使用browser.wait()等待模糊不清的內容消失:

browser.driver.wait(function() { 
    return !browser.driver.isElementPresent(by.css(".blurred")); 
}, 20000) 
.then(
    function() { 
    // success code 
    }, 
    function() { 
    // fail code 
    } 
); 

在這種情況下,它會等待高達 20秒。在模糊內容消失後,它會停止等待。

+0

如果超時,它會以毫秒爲單位顯示其等待的時間量,通常比超時量多20-50毫秒。當它沒有超時時,是否有一種方法可以在執行該函數之前保存其執行該函數的時間量,然後將其計算爲true? –

+0

@TahsisClaus請確認此選項適用於您。關於節省等待時間 - 一個非常有趣的問題 - 你能否提出一個單獨的SO問題,以便其他人可以幫助或找到類似問題的解決方案?謝謝! – alecxe