我目前正在为角度应用开发e2e测试。在运行我的测试套件之前,我必须手动启动后端(.net应用程序) - 我的想法是自动化这项任务。
我遇到了节点模块opener和child_process。我写了一个文件,我在preprotractor中执行npm执行。还有三个文件,其中两个将文件夹从服务器移动到我的桌面,另一个向我的后端发出http post请求。
应用程序在我的selenium独立服务器启动之前打开。然后我收到以下错误通知:
启动selenium独立服务器... [launcher]运行WebDriver的1个实例 Selenium独立服务器从http://10.0.1.56:62023/wd/hub开始 [launcher] BUG:启动器退出,剩下1个任务
您是否有任何想法或提示如何解决此问题?
这是我的package.json:
{
"name": "xxx",
"version": "0.0.0",
"description": "xxx",
"devDependencies": {
"bower": "^1.3.1",
"http-server": "^0.6.1",
"karma": "~0.10",
"karma-coverage": "~0.2.1",
"karma-junit-reporter": "^0.2.2",
"karma-ng-html2js-preprocessor": "^0.1.0",
"karma-requirejs": "^0.2.2",
"protractor": "^1.5.x",
"shelljs": "^0.2.6",
"jasmine-reporters": "^1.x",
"fs-extra": "^0.12.0",
"pix-diff": "^1.0.4",
"blink-diff": "^1.0.7"
},
"scripts": {
"postinstall": "bower install",
"prestart": "npm install",
"start": "http-server -a localhost -p 8000",
"pretest": "npm install",
"test": "karma start test/karma.conf.js",
"test-single-run": "karma start test/karma.conf.js --single-run",
"preupdate-webdriver": "npm install",
"update-webdriver": "webdriver-manager update",
"preprotractor": "npm run update-webdriver && node backend.js",
"protractor": "protractor test/protractor-conf.js",
"update-index-async": "node -e \"require('shelljs/global'); sed('-i', /\\/\\/@@NG_LOADER_START@@[\\s\\S]*\\/\\/@@NG_LOADER_END@@/, '//@@NG_LOADER_START@@\\n' + cat('app/bower_components/angular-loader/angular-loader.min.js') + '\\n//@@NG_LOADER_END@@', 'app/index-async.html');\""
}
}
答案 0 :(得分:1)
可能是因为您的测试中没有调用回调函数
this.Given(/^Step description$/, function (callback) {
// callback is not called
});
答案 1 :(得分:0)
从它的声音来看,你的backend.js可能提出启动服务器的请求,但从未等待它启动,因为量角器在你的后端准备好之前就开始了。
你想要的可能是(伪代码):
requestBackendStart();
while(backend.getState !== 'started') {
wait
}
确保在退出脚本之前后端已准备就绪。
答案 2 :(得分:0)
如果您有类似的东西,请将其从挂钩中取出
this.AfterFeatures(function() {
browser.close(); // not required
});

答案 3 :(得分:0)
对我来说,它是在我的process.exit()
内部调用protractor.conf.js
,在量角器清理干净之前终止了该过程。