我在nightwatch.js
应用程序中使用Node.js
编写集成测试。对于特定的测试用例,我希望通过proxy
连接nightwatch。这样做的正确方法是什么?我无法从official documentation或其Google Group找到任何内容。
Selenium
文档建议按照here所述在webdriver实例上进行设置。我不确定如何通过守夜人这样做。
答案 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'
]
}
}
工作没有任何问题。但这不适合我的用例。
经过一番摆弄后,我终于找到了解决这个问题的两种方法:
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]])