获取要在量角器测试中加载的 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
我有一个 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