我不确定当在代理/防火墙后面运行并且当前看到错误/超时时,配置应该针对BrowserStack进行实验2测试。
我的当前配置是:
proxyPort : 9000,
proxyUrl : 'http://localhost:9000',
tunnel : 'BrowserStackLocal',
tunnelOptions : {
username : 'myusername',
accessKey : 'myaccesskey',
hostname : '<myproxyip>',
proxy : 'http://<myproxyip>:<myproxyport>'
}
我认为我不需要hostname
但是如果我删除它,我会立即看到错误getaddrinfo ENOTFOUND
。
如果使用上面的配置,它似乎更进一步,等待一段时间然后看:
Listening on 0.0.0.0:9000
Starting tunnel...
BrowserStackLocal v3.3
Connecting to BrowserStack using WebSocket protocol...
Connected.
Ready
Error: [POST http://(redacted)@<myproxyip>:4444/wd/hub/session] connect ETIMEDOUT
Error: connect ETIMEDOUT
at errnoException <net.js:904:11>
at Object.afterConnect [as oncomplete] <net.js:895:19>
FATAL ERROR
Error: [POST http://(redacted)@<myproxyip>:4444/wd/hub/session] connect ETIMEDOUT
Error: connect ETIMEDOUT
at errnoException <net.js:904:11>
[POST http://(redacted)@<myproxyip>:4444/wd/hub/session]
网址似乎不正确。显然我有这个配置错误的&amp;我很感激任何建议。在代理服务器后面运行时,我很难理解实习生的文档。
答案 0 :(得分:1)
看起来你支持某种代理。
当你落后于代理服务器时,为了在浏览器堆栈中使用Intern,你需要做两件事:
获取本地测试连接以使用您正在执行的代理,您可以看到成功消息。
您必须确保运行Intern测试的节点进程适用于您的代理。要在节点应用程序中启用代理,最简单的选择是使用global-tunnel npm包。有一个分步指南here。
愿意回答您的任何疑问!请发送电子邮件至support@browserstack.com
Umang,
BrowserStack支持。
答案 1 :(得分:0)
我不确定,但我认为browserStack.js
中存在错误。我认为有些代理支持缺失。当我使用如下所示的配置browserstack_conf.js
时,测试运行正常,但当Browserstack尝试将测试结果发布回www.browserstack.com时会出现错误消息
[09:43:06] E/launcher - connect ETIMEDOUT 54.152.200.70:443
[09:43:06] E/launcher - Error: connect ETIMEDOUT 54.152.200.70:443
at Object.exports._errnoException (util.js:1018:11)
at exports._exceptionWithHostPort (util.js:1041:20)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1090:14)
[09:43:06] E/launcher - Process exited with error code 199
我可以通过以下步骤修复此错误:
npm install -g http-proxy-agent
browserStack.js
(位于例如C:\Users\myuser\AppData\Romaing\npm\node_modules\protractor\built\driverProviders\
中为此添加require
并初始化agent
并添加到request
。例如,在require
browserStack.js
var HttpProxyAgent = require('http-proxy-agent');
并将options
的部分更改为
let options = {
hostname: 'www.browserstack.com',
port: 443,
path: '/automate/sessions/' + session.getId() + '.json',
method: 'GET',
headers: headers//,
agent: new HttpProxyAgent('http://myproxy:3128')
};
我使用下面的配置启动Protractor
// browserstack.conf.js
var browserstack = require('browserstack-local');
exports.config = {
specs: ['spec.js'],
webDriverProxy: 'http://myproxy:3128',
browserstackUser: 'myuser',
browserstackKey: '*****',
capabilities: {
project: 'BrowserStack (beyond Proxy)',
browserName: 'Chrome',
browser_version: '50.0',
os: 'OS X',
os_version: 'Yosemite',
'browserstack.local': true,
'browserstack.debug': true
},
// Code to start browserstack local before start of test
beforeLaunch: function(){
console.log("Connecting local");
return new Promise(function(resolve, reject){
exports.bs_local = new browserstack.Local();
exports.bs_local.start({'key': '*****',
'proxyHost': 'myproxy', 'proxyPort': '3128',
'binarypath': 'C:\\Users\\myuser\\Downloads\\BrowserStackLocal-win32\\BrowserStackLocal.exe'},
function(error) {
if (error) return reject(error);
console.log('Connected. Now testing...');
resolve();
});
});
},
// Code to stop browserstack local after end of test
afterLaunch: function(){
return new Promise(function(resolve, reject){
exports.bs_local.stop(resolve);
});
}
};