使用量角器茉莉花框架无法访问Web Driver Error Chrome

时间:2018-12-04 15:00:08

标签: angular selenium-webdriver jasmine protractor selenium-chromedriver

我知道对于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/'
        }));

  }
};

1 个答案:

答案 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'的最后一个选项对我有用。