我的代码中有什么:
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());
但没有成功。
我已经通过使用独立的 browsermob 实例并通过 REST API 连接到它来解决这个问题。您可以使用简单的 GET/POST/PUT 请求管理远程实例,如 REST API 部分中所述:https://github.com/lightbody/browsermob-proxy
或者,您可以尝试在外部公开您的本地代理(但有必要为其分配真实地址),看看会发生什么。
我遇到了同样的问题。我使用以下堆栈:
- 浏览器MobProxy (https://github.com/lightbody/browsermob-proxy)
- Selenoid (https://github.com/aandryashin/selenoid) ->这个工具是Docker中的Selenium Hub,对于远程驱动程序,它的工作方式与通常的Se Grid完全相同。
通过以下代码让它工作(我使键代码加粗):
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);