Protractor 当服务器不可用时,量角器不会关闭浏览器

Protractor 当服务器不可用时,量角器不会关闭浏览器,protractor,Protractor,我用量角器做e2e测试。当我的应用程序在服务器上运行时,测试会顺利通过,随后浏览器会关闭,但当服务器关闭时,浏览器仍会保留(Firefox、Chrome)。在我的本地机器上没有问题,但我正在尝试在远程CI机器上运行测试,担心如果服务器无法运行,测试可能会生成多个浏览器窗口。在这种情况下,如何确保量角器关闭浏览器窗口 以下是我的配置: exports.config = { allScriptsTimeout: 11000, specs: [ '../test

我用量角器做e2e测试。当我的应用程序在服务器上运行时,测试会顺利通过,随后浏览器会关闭,但当服务器关闭时,浏览器仍会保留(Firefox、Chrome)。在我的本地机器上没有问题,但我正在尝试在远程CI机器上运行测试,担心如果服务器无法运行,测试可能会生成多个浏览器窗口。在这种情况下,如何确保量角器关闭浏览器窗口

以下是我的配置:

exports.config = {
    allScriptsTimeout: 11000,
    specs: [
            '../test/e2e/*.js'
    ],
    capabilities: {
        'browserName': 'firefox'
    },
    baseUrl: 'http://localhost:8000/',
    framework: 'jasmine',
    jasmineNodeOpts: {
        defaultTimeoutInterval: 30000
    }
};
测试是:

'use strict';

describe('typicaClient', function() {
    browser.get('index.html');

    it('test', function() {
        expect('str').toMatch('str');
    });
});

量角器使浏览器在它无法识别和处理的错误上保持打开状态

查看下面的示例。由
spawn()
进程引发的此错误未经量角器处理,它将以错误代码-
199退出

describe('sample test', function(){
    it('Sample Check', function(){
        browser.get("http://www.protractortest.org/#/");
        browser.sleep(5000);
        var terminal = require('child_process').spawn('34e3545')
    });
});
输出:

[18:26:46] I/local - Starting selenium standalone server...
[18:26:46] I/launcher - Running 1 instances of WebDriver
[18:26:46] I/local - Selenium standalone server started at http://192.168.1.5:61146/wd/hub
Started
[18:26:49] E/launcher - spawn 34e3545 ENOENT
[18:26:49] E/launcher - Error: spawn 34e3545 ENOENT
    at exports._errnoException (util.js:873:11)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:178:32)
    at onErrorNT (internal/child_process.js:344:16)
    at nextTickCallbackWith2Args (node.js:442:9)
    at process._tickCallback (node.js:356:17)
[18:26:49] E/launcher - Process exited with error code 199
要避免这些错误,请在非量角器命令中优雅地处理错误

describe('sample test', function(){
    it('Sample Check', function(){
        browser.get("http://www.protractortest.org/#/");
        browser.sleep(5000);
        var terminal = require('child_process').spawn('34e3545').on('error', function(err) {
            fail('Test is failing because we provided an invalid process')
        });
    });
});
这种情况下的输出:

[18:57:22] I/local - Starting selenium standalone server...
[18:57:22] I/launcher - Running 1 instances of WebDriver
[18:57:22] I/local - Selenium standalone server started at http://192.168.1.5:49867/wd/hub
Started
F

Failures:
1) sample test Sample Check
  Message:
    Failed: Test is failing because we provided an invalid process
  Stack:
    Error: Failed: Test is failing because we provided an invalid process
        at ChildProcess.<anonymous> (C:\Users\ayannam\WebstormProjects\demo\errorHandle.js:7:13)
        at emitOne (events.js:77:13)
        at ChildProcess.emit (events.js:169:7)
        at Process.ChildProcess._handle.onexit (internal/child_process.js:198:12)

1 spec, 1 failure
Finished in 6.582 seconds
[18:57:22]I/local-正在启动selenium独立服务器。。。
[18:57:22]I/launcher-运行WebDriver的1个实例
[18:57:22]I/local-Selenium独立服务器已在启动http://192.168.1.5:49867/wd/hub
起动
F
失败:
1) 样品检验
信息:
失败:测试失败,因为我们提供了无效的进程
堆栈:
错误:失败:测试失败,因为我们提供了无效的进程
在这个过程中。(C:\Users\ayannam\WebstormProjects\demo\errorHandle.js:7:13)
在emitOne(events.js:77:13)
在ChildProcess.emit(events.js:169:7)
在Process.ChildProcess.\u handle.onexit(internal/child\u Process.js:198:12)
1个规格,1个故障
以6.582秒完成

请看这个例子:未处理的异常被处理,量角器抛出一个错误代码-1,这个错误代码被优雅地处理了

谢谢你的回答,但是测试没有调用任何东西,除了
browser.get(“index.html”)
到目前为止(请看这个问题,我已经添加了测试),
get()
没有返回任何值。在这种情况下如何处理错误?非常感谢,
browser.get(“index.html”).catch(myCallback)
完成了任务。@Andriy。。。很高兴它帮助了。。。是的,如果异常来自一个量角器命令,您可以捕获异常,因为量角器命令返回一个被拒绝的承诺。。。。然后根据测试用例失败