我知道对于protactor端到端测试环境,这是非常常见的问题。我已经搜索了很多,但从未找到合适的答案。我正在使用Protractor框架茉莉花赛跑者进行我的角度应用程序测试。现在我有10个sppec.ts类。我的测试正在使用硒服务器运行。问题是在运行4个测试用例之后,浏览器突然停止工作,并且我在jenkins中收到以下消息。我读过一些以前的著作,每个人在整个测试用例中都遇到这个问题。但是对于随机规格,我仅收到一次此错误。现在,在开始测试之前,我该如何检查这一点,以便如果发生这种情况,则测试将被忽略。
我的示例测试用例是。
describe('010 check that user option will work', function () {
it('user can click on main page', async () => {
// 1.
await loginIntoPage(LoginPage.url, Constants.CORRECT_USERNAME, Constants.CORRECT_PASSWORD, LoginPage.englishLanguageMenuItem);
await leftTopMenuItem.isDisplayed();
// 2.
await click.onto(languageButton);
await expect(languageDropdown.isDisplayed);
// 3.
await click.onto(key);
await expect(leftTopMenuItem.getText()).toBe('[A01User]');
// 4.
await click.onto(ContentPage.user);
});
});
量角器配置文件
const JasmineConsoleReporter = require('jasmine-console-reporter');
const reporter = new JasmineConsoleReporter({
colors: 1, // (0|false)|(1|true)|2
cleanStack: 1, // (0|false)|(1|true)|2|3
verbosity: 4, // (0|false)|1|2|(3|true)|4|Object
listStyle: 'indent', // "flat"|"indent"
timeUnit: 'ms', // "ms"|"ns"|"s"
timeThreshold: { ok: 500, warn: 1000, ouch: 3000 }, // Object|Number
activity: false, // boolean or string ("dots"|"star"|"flip"|"bouncingBar"|...)
emoji: true,
beep: true
});
var Jasmine2HtmlReporter = require('protractor-jasmine2-html-reporter');
exports.config = {
allScriptsTimeout: 11000000,
specs: [
'./e2e/tests/**/*.e2e-spec.ts'
],
multiCapabilities: [
{
'browserName' : 'chrome',
'chromeOptions': { 'args' : ['--disable-extensions']},
'shardTestFiles': true,
'maxInstances': 1
},
{
'browserName' : 'firefox',
'maxInstances': 1
},
{
'browserName': 'internet explorer',
},
],
seleniumAddress: 'http://192.168.178.118:14444/wd/hub',
baseUrl: 'base url',
framework: 'jasmine',
jasmineNodeOpts: {
isVerbose: true,
showColors: true,
defaultTimeoutInterval: 2000000 // 32 minutes === 2000000msec defaultTimeoutInterval is a timeout from jasmine for each it
},
useAllAngular2AppRoots: true,
beforeLaunch: function() {
},
onPrepare: function() {
require('ts-node').register({
project: 'e2e/tsconfig.json'
});
jasmine.getEnv().addReporter(reporter);
var AllureReporter = require('jasmine-allure-reporter');
jasmine.getEnv().addReporter(new AllureReporter({
resultsDir: 'allure-results'
}));
jasmine.getEnv().afterEach(function(done){
browser.takeScreenshot().then(function (png) {
allure.createAttachment('Screenshot', function () {
return new Buffer(png, 'base64')
}, 'image/png')();
done();
})
});
jasmine.getEnv().addReporter(new Jasmine2HtmlReporter({
savePath: './test/jasmine-results/'
}));
}
};
答案 0 :(得分:0)
我正面临类似的问题。我发现在Docker构建中没有解决的解决方案,但是我的不是docker构建。找到了一种在chrome配置中提供相同选项的方法:
在protractor.conf.js中添加了以下内容
capabilities: {
'browserName': 'chrome',
'chromeOptions': {
'args': ['--disable-web-security',
'--disable-gpu',
'--disable-infobars',
'--disable-dev-shm-usage']
}
},
'-disable-dev-shm-usage'的最后一个选项对我有用。