Browsermob代理如何使其与selenium网格一起使用? 【JAVA]

时间:2016-07-05 21:11:39

标签: grid browsermob browsermob-proxy

我的代码中包含的内容:

public BrowserMobProxy getProxy() throws UnknownHostException {
    if (proxy == null) {
        proxy = new BrowserMobProxyServer();
        proxy.start(0);
    }
    return proxy;

seleniumProxy = ClientUtil.createSeleniumProxy(getProxy());
caps.setCapability(CapabilityType.PROXY, seleniumProxy);

问题是在本地运行它很好,但在网格上运行它(自己或者browserstack)它不能正常工作。有没有办法让它工作 - 代理在本地运行并监听远程驱动程序?

我试过了:

proxy.start(0, InetAddress.getLocalHost());

但没有成功。

2 个答案:

答案 0 :(得分:0)

我设法通过使用独立的browsermob实例并通过REST api连接到它来解决这个问题。您可以使用简单的GET / POST / PUT请求管理远程实例,如REST API部分所述:https://github.com/lightbody/browsermob-proxy

OR 您可以尝试在外部公开您的本地代理(但有必要为其分配实际地址)并查看将要发生的事情。

答案 1 :(得分:0)

我遇到了同样的问题。 我使用以下堆栈:

我通过以下代码得到它(我将密钥代码加粗):

    proxy = new BrowserMobProxyServer();
    proxy.start(0);
    Proxy seleniumProxy = null;    
seleniumProxy = ClientUtil.createSeleniumProxy(proxy);
    String ipAddress = new NetworkUtils().getIp4NonLoopbackAddressOfThisMachine().getHostAddress();
    int port = proxy.getPort();
    seleniumProxy.setHttpProxy(ipAddress + ":" + port);
    DesiredCapabilities capability = DesiredCapabilities.chrome();
                    capability.setCapability(CapabilityType.PROXY, seleniumProxy);
                    driver = new RemoteWebDriver(new URL("your_selnium_hub_ip:4444/wd/hub"), capability);