【发布时间】:2017-02-09 19:53:03
【问题描述】:
今晚早些时候我能够使用 browserstack-local 运行我的 Protractor 测试,但到晚上结束时无法运行,我无法弄清楚发生了什么。
node v7.4.0
protractor v5.0.0
browserstack-local v1.2.0
这是我的 conf.ts 文件:
'use strict';
import { Config, browser } from 'protractor';
import testSuites = require('./testSuites.js');
import browserstack = require('browserstack-local');
const commonCapabilities = {
'browserstack.user': '*****',
'browserstack.key': '*****',
'browserstack.local': true
};
export let config: Config = {
baseUrl: 'https://localhost:8443',
seleniumAddress: 'http://hub-cloud.browserstack.com/wd/hub',
multiCapabilities: [{
browserName: 'chrome',
browser_version: '54.0',
os: 'Windows',
os_version: '10',
resolution: '1280x800'
}],
specs: ['src/**/*spec.js'],
suites: testSuites.suites,
framework: 'mocha',
mochaOpts: {
reporter: 'spec',
slow: 0,
timeout: 60000
},
allScriptsTimeout: 3600000,
onPrepare: () => {
browser.manage().window().setSize(1280, 800);
},
params: {
user: 'seleniumtesting'
},
beforeLaunch() {
console.log('Starting BrowserStack Local...');
return new Promise((resolve, reject) => {
exports.bs_local = new browserstack.Local();
exports.bs_local.start({ key: commonCapabilities['browserstack.key']}, error => {
if (error) {
return reject(error);
}
console.log('BrowserStack Started.');
resolve();
});
});
},
afterLaunch() {
return new Promise(resolve => {
if (!exports.bs_local) {
console.log('Skipping shutdown of BrowserStack Local...');
resolve();
return;
}
console.log('Stopping BrowserStack Local...');
exports.bs_local.stop(resolve);
});
}
};
// Code to support common capabilities
exports.config.multiCapabilities.forEach((caps) => {
Object.keys(commonCapabilities).forEach(i => {
caps[i] = caps[i] || commonCapabilities[i];
});
});
当我运行量角器测试时,我得到:
Starting BrowserStack Local...
(node:3755) DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.
/usr/local/lib/node_modules/protractor/node_modules/q/q.js:155
throw e;
^
Error
at /protractor/node_modules/browserstack-local/lib/Local.js:57:20
at ChildProcess.exithandler (child_process.js:202:7)
at emitTwo (events.js:106:13)
at ChildProcess.emit (events.js:191:7)
at maybeClose (internal/child_process.js:885:16)
at Socket.<anonymous> (internal/child_process.js:334:11)
at emitOne (events.js:96:13)
at Socket.emit (events.js:188:7)
at Pipe._handle.close [as _onclose] (net.js:501:12)
这很奇怪,因为自从它上次在晚上早些时候工作以来,我没有在我的环境中进行任何更改,现在我无法再让它运行而没有看到这个错误。我一直在尝试调试这个没有任何运气,如果我遗漏了什么,有人可以帮我发现吗?
提前致谢!
【问题讨论】:
-
该错误指向启动 BrowserStack Local 应用程序的问题。如果为先前的测试运行启动的二进制文件未正确终止,我已经看到了这种行为。基本上,二进制文件已经在运行并且脚本正在尝试再次启动它。您可以通过解析 URL localhost:45691/check 来确认二进制文件是否已经在运行。如果您看到“启动并运行”,则表示存在一个活动的二进制实例。停止并重新运行您的测试。如果不是上述情况,那么最好联系 BrowserStack 的支持团队。也可以尝试联系 support@browserstack.com。
-
@MukeshTiwari 非常感谢您对我的方案的评论。我尝试重新启动我的笔记本电脑并再次运行测试,一切似乎又恢复了。您的建议听起来可能是发生在我身上的事情,但我之前检查了 localhost:45691/check url,它似乎没有被使用。我知道你所说的场景,我记得有一条错误消息实际上告诉我端口 45691 正在使用中。无论如何,下次会记住这一点!