1

我的代码中有什么:

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

问题在本地运行它很好,但在网格(自己的或浏览器堆栈)上运行它不起作用。有什么方法可以使它工作-代理在本地运行并监听远程驱动程序?

我试过了:

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

但没有成功。

4

2 回答 2

1

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

或者您可以尝试在外部公开您的本地代理(但有必要为其分配真实地址),看看会发生什么。

于 2016-07-26T19:00:58.563 回答
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);
于 2017-04-12T10:49:47.170 回答