在Protractor中为e2e-tests设置https代理

时间:2016-02-02 00:32:50

标签: node.js selenium proxy webdriver protractor

我想在使用Protractor的e2e测试期间将网络请求存根到第三方服务,同时保持浏览器和我的api之间的通信。此外,我希望能够将一些特定的呼叫存根到我的api,同时保持其他呼叫不变。

我正在测试的应用程序被容器化到Docker容器中。 e2e测试在Firefox中在一个容器中运行,而API服务器在另一个容器中。

所以我要做的是设置一个带有代理节点服务器的容器(让我们调用这个容器proxy)。我希望来自浏览器的所有网络流量都通过代理服务器,在那里可以根据需要存储部分流量。

这几乎可行。但是,我观察到的是,只有http流量通过代理传递,而https流量转义代理。我想知道为什么会这样。

以下是Protractor配置的相关部分:

exports.config = {

    ...

    capabilities: {
        'browserName': 'firefox',
        'proxy': {
            'proxyType': 'manual',
            'httpProxy': 'proxy:3000',
            'sslProxy': 'proxy:3000'
        }
    },
    ...
}

我尝试了sslProxyhttpsProxy选项,就像我在各种在线讨论中看到的那样,但没有人通过我的代理帮助定位https请求。例如,我在页面上添加了两个图片 - 一个是通过http提供的Google徽标,另一个是通过https提供的。我可以在proxy泊坞窗日志中看到通过http提供的图像请求通过代理服务器传递,但是通过https提供的图像请求却没有。

所以我的问题是,我有什么明显的错误吗?您能否建议是否可以通过代理服务器引导浏览器的https请求?

1 个答案:

答案 0 :(得分:1)

protractor reference config目前似乎不支持proxy的功能。

您可能不想尝试通过量角器或可能/etc/hosts文件将调用重定向到代理服务器,而是可以考虑更改Web应用程序以使用依赖注入来将这些调用更改为从第三方服务器指向到代理服务器。