【问题标题】:Browsermob proxy how to make it work with selenium grid? [java]Browsermob代理如何使其与硒网格一起使用? [爪哇]
【发布时间】:2016-11-07 20:15:39
【问题描述】:

我的代码中有什么:

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

但没有成功。

【问题讨论】:

    标签: grid browsermob browsermob-proxy


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      我通过以下代码使其工作(我将关键代码加粗):

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

      【讨论】:

      • 对我不起作用,在显示No internet页面的浏览器中添加代理结果
      • 这个解决方案很少在 CI 环境中工作,因为执行 BMP 的本地主机(通常是 GitLab、Bamboo 代理等)必须可以从远程浏览器(通常是云部署)访问。
      猜你喜欢
      • 2014-10-25
      • 1970-01-01
      • 1970-01-01
      • 2020-08-28
      • 2014-09-19
      • 2015-07-17
      • 2012-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多