【发布时间】:2015-12-08 23:17:32
【问题描述】:
我正在尝试启动多个与multiCapabilities 端口值相对应的代理。例如,如果_conf.js 文件有两个multiCapabilities 集,则应该使用不同的端口值启动两个代理。
在_conf.js中,我设置了以下信息:
exports.config = {
...
multiCapabilities: [
{ 'browserName': 'chrome',
'proxy': { 'httpProxy': 'localhost:8889' },
'count': '1' },
{ 'browserName': 'firefox',
'proxy': { 'httpProxy': 'localhost:9001' },
'count': '1' },
期望:两个实例,一个浏览器为 chrome 的实例有一个端口为 8889 的代理。另一个使用 Firefox 作为其浏览器和一个端口为9001 的代理。
为此,我尝试在 spec.js 文件中的 beforeEach 函数中使用 browser.getProcessedConfig().then(。但是,在启动代理之前我无法获取值。
在_spec.js 文件中,我试图在以这种方式启动代理之前读取httpProxy 值。
var Proxy = require('browsermob-proxy').Proxy;
describe('stress testing-' + dateone.curdate2Sec, function() {
var curport = 0;
beforeEach(function (done) {
// READ HTTPPROXY TO PASS AS A PORT NUMBER FOR PROXY
browser.getProcessedConfig().then(function(config) {
curport = config.capabilities.proxy.httpProxy.split(':')[1];
});
/* Proxy Part */
var proxy = new Proxy();
return Q.ninvoke(proxy, 'start', curport)
.then(
function (data) {
console.log('data', data);
console.log('arguments', arguments);
browser.params.proxy = proxy;
browser.params.proxyData = data;
return data;
},
function () {
console.log('start failed');
})
.then(
function() {
browser.params.proxy.startHAR(browser.params.proxyData.port, 'test', done);
}
);
});
量角器实例首先运行return Q.ninvoke(proxy, 'start', curport),然后解析getProcessedConfig,这发生在启动代理之后。
我尝试将/* Proxy Part */ 插入browser.getProcessedConfig().then(...),但还是不行。
有什么方法可以让我立即在beforeEach 上读取multiCapabilities 的具体值,而不是等待by .then()?
这是主要的reference I used。
【问题讨论】:
-
我认为你需要结合promise,你可以通过调用
getProcessedConfig()获得它,并且只有当它解决时——创建一个代理。之后 - 从 beforeEach 返回一个结果承诺,因此 Protractor 将等待所有操作序列。 -
@NathanielFord 感谢您的帮助,Nathaniel Ford!
-
@MichaelRadionov 感谢您的建议,Michael Radionov!
标签: protractor