2017-09-25 64 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)。 –