Protractor 当服务器不可用时,量角器不会关闭浏览器
我用量角器做e2e测试。当我的应用程序在服务器上运行时,测试会顺利通过,随后浏览器会关闭,但当服务器关闭时,浏览器仍会保留(Firefox、Chrome)。在我的本地机器上没有问题,但我正在尝试在远程CI机器上运行测试,担心如果服务器无法运行,测试可能会生成多个浏览器窗口。在这种情况下,如何确保量角器关闭浏览器窗口 以下是我的配置:Protractor 当服务器不可用时,量角器不会关闭浏览器,protractor,Protractor,我用量角器做e2e测试。当我的应用程序在服务器上运行时,测试会顺利通过,随后浏览器会关闭,但当服务器关闭时,浏览器仍会保留(Firefox、Chrome)。在我的本地机器上没有问题,但我正在尝试在远程CI机器上运行测试,担心如果服务器无法运行,测试可能会生成多个浏览器窗口。在这种情况下,如何确保量角器关闭浏览器窗口 以下是我的配置: exports.config = { allScriptsTimeout: 11000, specs: [ '../test
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。。。很高兴它帮助了。。。是的,如果异常来自一个量角器命令,您可以捕获异常,因为量角器命令返回一个被拒绝的承诺。。。。然后根据测试用例失败