我知道这是一个非常常见的proctor end2end测试环境检查。我已经搜索了很多,但从来没有找到合适的答案。我正在使用Protractor框架jasmine runner进行我的angular应用程序测试。现在我有10节课。我的测试正在使用selenium服务器运行。问题是在运行了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/'
}));
}
};
我也面临类似的问题。我在docker构建中找到了一些解决方案,但我的不是docker构建。找到了一种在chrome配置中提供相同选项的方法:
在dractor.conf.js 中添加了以下内容
capabilities: {
'browserName': 'chrome',
'chromeOptions': {
'args': ['--disable-web-security',
'--disable-gpu',
'--disable-infobars',
'--disable-dev-shm-usage']
}
},
最后一个选项"--禁用dev-shm用法"对我来说很有用