1

当在代理/防火墙后面运行并且当前看到错误/超时时,我不确定应该针对 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]网址似乎不对。显然我有这个错误的配置 & 将不胜感激任何建议。在代理后面运行时,我确实很难理解实习生的文档。

4

2 回答 2

1

看起来你在某种代理后面。

当你在代理服务器后面时,为了在 BrowserStack 中使用 Intern,你需要做两件事:

  1. 获取本地测试连接以使用您正在执行的代理,您可以看到成功消息。

  2. 您必须确保运行实习生测试的节点进程与您的代理一起工作。要在节点应用程序中启用代理,最简单的选择是使用 global-tunnel npm 包。此处提供了分步指南。

很乐意回答您可能有的任何疑问!请发送邮件至 support@browserstack.com

Umang,
BrowserStack 支持。

于 2014-11-03T11:16:46.860 回答
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

我可以通过以下步骤修复此错误:

  1. npm install -g http-proxy-agent
  2. 编辑browserStack.js(例如位于为此C:\Users\myuser\AppData\Romaing\npm\node_modules\protractor\built\driverProviders\添加 arequire并初始化 aagent并添加到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')
            };    

我用下面的配置启动量角器

// 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);
   });
  } 
};
于 2017-05-03T07:55:33.600 回答