2017-09-25 66 views
0

量角器版本:5.1.2
節點版本:6.9.0
角版本:2.4.10量角器不是等待angular2加載

OnPrepare功能我做browser.get('/')。在此之後,我正在登錄it
第一個問題是它會引發錯誤的異步函數不叫。做一個失敗的研究後,我加入browser.sleep(500)那麼上面停下來和執行登錄it情況。

之後,我必須點擊一個按鈕,登陸頁面,然後導航到另一個頁面,並單擊另一個button.Here也失敗說沒有元素髮現的定位。但如果我添加browser.waitForAngular()browser.sleep(),然後它開始工作。我無法每次都明確地添加它。而且,當我使用量角器(版本:1.3)時,它從未出現過。

所以我覺得這個問題是量角器是不是等待的角度同步。
任何解決方案表示讚賞。

量角器配置文件

exports.config = { 
directConnect: true, 
useAllAngular2AppRoots: true, 
specs: ['./**/*.spec.js'], 
baseUrl: 'http://10.209.1.38:9090', 
framework: 'jasmine2', 
capabilites: { 
    'browserName': 'chrome' 
}, 
jasmineNodeOpts: { 
    showColors: true, 
    defaultTimeoutInterval: 60000 
}, 
onPrepare: function() { 
    browser.driver.manage().window().maximize(); 
    browser.get('/'); 
    browser.sleep(500); 
} 
}; 

回答

0

嘗試以下conf.js文件中的代碼和exports.config標籤: -

browser.ignoreSynchronization = true; 

,登錄內部 「它」 使用下面的代碼: -

browser.waitForAngularEnabled(false); 

而在另一個着陸頁內使用此代碼: -

browser.waitForAngularEnabled(true); 
+0

你的意思是說,我應該使用'browser.waitForAngularEnabled()'爲每個'它'case? –

+0

不,對於每一個同步,你從角頁移動到非角頁。 – 2017-09-27 07:09:52

+0

我的整個應用程序在角 –

0

在執行測試之前,量角器不一定等待onPrepare完成。

但是,您可以選擇返回onPrepare內的promise,然後量角器將在繼續執行之前等待。

查看詳情in this question herecorresponding Protractor documentation here

對於我的情況,我添加了登錄步驟(填充用戶名和密碼,單擊登錄)到onPrepare函數,該函數也創建承諾,因此觸發Protractor測試執行,直到解決onPrepare-Promises。

onPrepare: function() { 
    var login_page = require('../page/login_page.js'); 
    browser.driver.manage().window().maximize(); 
    browser.get('/'); 
    login_page.enterUserName('user'); 
    login_page.enterPassword('password'); 
    login_page.clickLogin(); 
} 
+0

沒有幫助我的兄弟....我仍然無法理解爲什麼量角器不是你的答案 –

+0

等待屏幕加載或完成一些要求..反正感謝把它簡單的話:如果內'onPrepare'沒有什麼等待,量角器不會等待。由於您沒有解決'onPrepare'中的任何承諾,因此無需等待。嘗試添加線路瀏覽器。waitForAngular();''在你的'browser.get('/');'下面並且讓我知道,如果那有效的話。 (基本上量角器應該這樣做,不加這條線,但有一些具有挑戰性的星座,所以它可能會溜走)。 –

+0

也[在這裏查看這個相對類似的問題](https://stackoverflow.com/a/46734826/8683679)。 –