获取要在量角器测试中加载的 Angular 内容

Getting the Angular Content to load in protractor tests

我有一个 angular 应用程序,我正在编写使用量角器的端到端测试。

以下是我的 conf.js 文件设置

var project = require('./package.json');
var HtmlReporter = require('protractor-jasmine2-screenshot-reporter');

var multiCapabilities = [{
    'browserName': 'chrome'
}];

multiCapabilities = [{
    'browserName': 'chrome',
    "platform": "Windows 7",
    'build': 'Testing',
    'name': project.name + ' tests'
}]

exports.config = {
    framework: 'jasmine2',
    sauceUser: 'blahblhablah',
    sauceKey: 'xyzabcdxyzabac',
    multiCapabilities: multiCapabilities,
    specs: ['e2e/main.spec.js'],
    jasmineNodeOpts: {
        showColors: true,
        defaultTimeoutInterval: 30000
    },
    onPrepare: function() {
        jasmine.getEnv().addReporter(new HtmlReporter({
            dest: 'reports/e2e'
        }));
    }
};

以下是我的测试规范文件

'use strict';

var mainPage = require('./page.js');
describe('Demo', function() {

    //Check if title pages are consistent
    it('Test 1', function() {

        browser.get('http://localhost:3000/'); 
        expect(browser.getTitle()).toEqual('NBA LIVE');
    });
});

我正在 运行 对 saucelabs 进行测试,当我在本地 运行 它们时,我没有任何问题。所以在我 运行 这个测试之后,我收到了以下错误消息。

   Message:
      Failed: Angular could not be found on the page http://localhost:3000/ : retries looking for
      angular exceeded

所以我做了更多的研究,意识到我可以在我的测试规范文件中设置 browser.ignoreSynchronization = true;

所以在这样做之后我收到以下错误消息:

   Message:
      Expected 'http://localhost:3000/' to equal 'NBA LIVE'.

所以我认为 angular 或内容未加载可能是因为我将忽略同步设置为 true,但如果我不这样做,则会出现其他错误。 none 当 运行 在我的笔记本电脑上进行本地测试但仅在 saucelab 上进行测试时,这又是一个问题。很明显,我需要添加一些内容来加载 angular 内容。请告诉我该怎么做。

可能发生的情况是它在页面加载之前检查期望值,因此您可以尝试使用 protractor.until statments

    browser.wait(protractor.until.titleIs("NBA LIVE"), 5000, "✗ Failed to wait for the NBA LIVE page to load");
    expect(browser.getTitle()).toEqual("NBA LIVE");

编辑:

由于您使用的是本地应用程序并使用 saucelabs,因此您需要设置 sauce connect