在nightwatch.js中设置代理

时间:2015-05-21 21:38:25

标签: node.js selenium-webdriver http-proxy nightwatch.js

我在nightwatch.js应用程序中使用Node.js编写集成测试。对于特定的测试用例,我希望通过proxy连接nightwatch。这样做的正确方法是什么?我无法从official documentation或其Google Group找到任何内容。

Selenium文档建议按照here所述在webdriver实例上进行设置。我不确定如何通过守夜人这样做。

3 个答案:

答案 0 :(得分:5)

nightwatch.json 配置文件中,您应该能够在 desiredCapabilities 中设置代理参数:

"chrome" : {
  "desiredCapabilities": {
    "browserName": "chrome",
    "javascriptEnabled": true,
    "acceptSslCerts": true,
    "chromeOptions" : {
      "args" : [
        "disable-extensions",
        "start-maximized"
      ]
    },
    "proxy": {
      "proxyType": "manual",
      "httpProxy": "your_proxy:8080"
    }
  }
},

检查此文档:https://code.google.com/p/selenium/wiki/JsonWireProtocol#Proxy_JSON_Object

答案 1 :(得分:3)

我在搜索socks5代理解决方案时偶然发现了这个问题。 当我使用socksProxy文档使用message: 'unknown error: cannot parse capability: proxy from unknown error: proxyType is \'manual\' but no manual proxy capabilities were found 文档中的实现时,我总是遇到以下错误:

proxyType: 'pac'

使用通过proxy.pac文件配置的socks5代理 - proxyAutoconfigUrl使用desiredCapabilities: { browserName: 'chrome', /* … */ chromeOptions: { args: [ '--proxy-server=socks5://proxy_url:proxy_port' ] } } 工作没有任何问题。但这不适合我的用例。

经过一番摆弄后,我终于找到了解决这个问题的两种方法:

  1. 使用CLI args进行chromedriver
  2. desiredCapabilities: {
      browserName: 'chrome',
      /* … */
      proxy: {
        proxyType: 'manual',
        sslProxy: 'socks5://proxy_url:proxy_port'
      }
    }
    

    *编辑:看起来已被删除了 2.使用sslProxy属性
    因为袜子代理在理论上只不过是一个ssl隧道我以为我可以再试一次这个属性。使它最终工作的解决方案看起来像这样:

    py.test --ignore=somedir

    希望答案可以帮助任何寻求有关socks5代理帮助的人。 :)
    但更重要的是,chromedriver将来会正确实施JsonWireProtocol。

答案 2 :(得分:1)

Nightwatch改变了In[73]: arr[0] Out[74]: ([1, 2, 3], [ 1., 0.]) 文件中的代理对象在开始使用代理代理而不是http代理时的工作方式,遗憾的是它似乎没有记录在任何地方。但它仍然存在,您只需要在代理对象中传递不同的参数。 '协议'它接受列在proxy-agent github上。请参阅下面的示例。

In [73]: arr['in']
Out[73]: 
array([[1, 2, 3],
   [4, 5, 6]])