我正在尝试启动与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
的代理。
为此,我尝试在browser.getProcessedConfig().then(
文件中的beforeEach函数中使用spec.js
。但是,在启动代理之前我无法获取值。
在_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(...)
,但它仍无效。
有没有办法可以立即在multiCapabilities
上阅读beforeEach
的具体价值,而不是等待by .then()
?
这是主reference I used。
答案 0 :(得分:0)
我认为您已经关闭,您可以使用curport
将.then()
从Promise传递到代理功能,以使用正确的端口号创建代理。如果您发现脚本的其余部分没有等待创建代理,您可以在controlFlow的上下文中执行它,如:
beforeEach(function() {
browser.getProcessedConfig().then(function(config) {
return config.capabilities.proxy.httpProxy.split(':')[1];
}).then(function(curport) {
browser.controlFlow().execute(function() {
/* Proxy Part */
Q.ninvoke(proxy, 'start', curport)
...
...
});
});
});