繁体   English   中英

量角器不等待angular2加载

[英]Protractor not waiting for angular2 to load

量角器版本:5.1.2
节点版本:6.9.0
角度版本:2.4.10

OnPrepare函数我正在做browser.get('/') 在此之后我做的一个登录it
第一个问题是由于未调用异步函数而引发错误。 做一个失败的研究后,我加入browser.sleep(500)那么上面停下来来执行登录it的情况。

之后,我必须单击登录页面上的按钮,然后导航到另一个页面并单击另一个按钮。这里也失败了,说找不到定位器的元素 。但是如果我添加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);
 }
};

尝试在conf.js文件和export.config标记内的以下代码:-

browser.ignoreSynchronization = true;

并在登录名“ it”中使用以下代码:-

browser.waitForAngularEnabled(false);

在另一个目标网页中使用以下代码:

browser.waitForAngularEnabled(true);

在执行测试之前,量角器不必等待onPrepare完全完成。

但是,您可以选择在onPrepare内返回一个promise ,然后Protractor将在继续执行之前等待它。

在此处查看此问题的详细信息或在此处查看 相应的量角器文档

就我而言,我在onPrepare函数中添加了登录步骤(填写用户名和密码,单击Login),该函数还创建了Promise,因此触发了量角器测试执行,直到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();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM