【问题标题】:Protractor not waiting for angular2 to load量角器不等待 angular2 加载
【发布时间】:2018-03-06 08:10:03
【问题描述】:

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

OnPrepare 我正在做的函数browser.get('/')。在此之后,我正在登录 it
第一个问题是由于 未调用异步函数而引发错误。在进行失败的研究后,我添加了browser.sleep(500),然后上面的内容停止来执行登录it 案例。

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

【问题讨论】:

    标签: angular protractor


    【解决方案1】:

    Protractor 不一定要等到onPrepare 完全完成,然后再执行测试。

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

    查看详情in this question herecorresponding Protractor documentation here

    对于我的情况,我将登录步骤(填写用户名和密码,单击登录)添加到 onPrepare 函数中,这也会创建承诺,因此会触发量角器测试执行以等待 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();
    }
    

    【讨论】:

    • 没有帮助我兄弟....我仍然无法理解为什么量角器不等待屏幕加载或完成一些请求.. 无论如何感谢您的回答
    • 简单来说:如果在onPrepare 内没有等待,Protractor 不会等待。由于您没有在onPrepare 中解决任何承诺,因此无需等待。尝试在您的browser.get('/'); 下方添加browser.waitForAngular(); 行,如果可行,请告诉我。 (基本上量角器无论如何都应该这样做而不添加这条线,但是有一些具有挑战性的星座,所以它可能会溜走。
    【解决方案2】:

    在 conf.js 文件和exports.config 标签中尝试以下代码:-

    browser.ignoreSynchronization = true;
    

    在登录“它”里面使用下面的代码:-

    browser.waitForAngularEnabled(false);
    

    在另一个登陆页面内使用以下代码:-

    browser.waitForAngularEnabled(true);
    

    【讨论】:

    • 你的意思是说,我应该为每个it 案例使用browser.waitForAngularEnabled()
    • 不,对于每次同步,您都从 Angular 页面移动到非 Angular 页面。
    • 我的整个应用程序都在 Angular 中运行
    • 在这种情况下,请提供您的应用程序 URL,我会对此进行调查,
    • 它正在开发中:P
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 2016-04-25
    • 2015-08-29
    相关资源
    最近更新 更多