【问题标题】:intern 2 configuration for BrowserStack behind a proxy代理后面的 BrowserStack 的实习生 2 配置
【发布时间】:2014-10-31 19:10:00
【问题描述】:

当在代理/防火墙后面运行并且当前看到错误/超时时,我不确定应该针对 BrowserStack 运行什么配置。

我当前的配置是:

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)@&lt;myproxyip&gt;:4444/wd/hub/session] 网址似乎不正确。显然我有这个错误的配置&希望得到任何建议。在代理后面运行时,我确实很难理解实习生的文档。

【问题讨论】:

    标签: intern browserstack


    【解决方案1】:

    您似乎在使用某种代理。

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

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

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

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

    乌芒,
    BrowserStack 支持。

    【讨论】:

    • Umang,感谢您的回复,但不幸的是,这是一个实习生配置问题,没有看到它记录在案。我已经能够通过代理对我的本地环境运行 wd.js 测试,所以在这方面一切都很好。
    【解决方案2】:

    我不确定,但我认为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\ 中为此添加require 并初始化agent 并添加到request。

    例如在browserStack.js 的顶部添加require

    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);
       });
      } 
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多