我可以使用以下代码使用browsermob和硒运行并获取响应标头
DesiredCapabilities capabilities = new DesiredCapabilities();
BrowserMobProxy proxy = getProxyServer(); //getting browsermob proxy
Proxy seleniumProxy = getSeleniumProxy(proxy);
capabilities.setCapability(CapabilityType.PROXY, seleniumProxy);
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
WebDriver driver = new ChromeDriver(capabilities);
proxy.setHarCaptureTypes(CaptureType.REQUEST_HEADERS,CaptureType.RESPONSE_HEADERS);
proxy.newHar(); // creating new HAR
driver.get("https://www.google.com");
List<HarEntry> entries = proxy.getHar().getLog().getEntries();
for (HarEntry entry : entries) {
System.out.println(entry.getRequest().getUrl());
}
proxy.stop();
driver.close();
}
public Proxy getSeleniumProxy(BrowserMobProxy proxyServer) {
Proxy seleniumProxy = ClientUtil.createSeleniumProxy(proxyServer);
try {
String hostIp = Inet4Address.getLocalHost().getHostAddress();
seleniumProxy.setHttpProxy(hostIp + ":" + proxyServer.getPort());
seleniumProxy.setSslProxy(hostIp + ":" + proxyServer.getPort());
} catch (UnknownHostException e) {
e.printStackTrace();
Assert.fail("invalid Host Address");
}
return seleniumProxy;
}
public BrowserMobProxy getProxyServer() {
BrowserMobProxy proxy = new BrowserMobProxyServer();
proxy.setTrustAllServers(true);
proxy.start();
return proxy;
}
但是当我将其运行到硒docker容器时遇到问题
通过使用此代码,我可以打开chromebrowser
DesiredCapabilities capabilities =new DesiredCapabilities();
capabilities.setBrowserName("chrome");
capabilities.setPlatform(Platform.getCurrent());
BrowserMobProxy proxy = getProxyServer(); //getting browsermob proxy
Proxy seleniumProxy = getSeleniumProxy(proxy);
capabilities.setCapability(CapabilityType.PROXY, seleniumProxy);
driver = new RemoteWebDriver(new URL("http://172.17.0.3:5555/wd/hub"), capabilities);
proxy.setHarCaptureTypes(CaptureType.REQUEST_HEADERS, CaptureType.RESPONSE_HEADERS);
proxy.newHar();
driver.get("https://www.google.com");
但它显示
没有互联网代理服务器出了点问题,或者地址不正确。
谁能知道如何在selenium docker容器中运行此程序。感谢您的帮助。