jl3*_*303 3 java firefox selenium browsermob-proxy geckodriver
我正在尝试使用BMP的RequestFilter和ResponseFilter获得响应和请求.但是,当加载网页时,控制台中不会打印任何内容.
其他一切似乎都有效.也许BMP不是在看GeckoDriver?
我使用的是Firefox 50.0,BrowserMobProxy 2.1.2,Selenium 3.0.1和GeckoDriver 0.11.1
.测试代码如下.有人可以帮帮我吗?
非常感谢你!
BrowserMobProxy server = new BrowserMobProxyServer();
server.enableHarCaptureTypes(CaptureType.REQUEST_CONTENT, CaptureType.RESPONSE_CONTENT);
server.start();
int port = server.getPort();
server.addRequestFilter((request, content, info) -> {
String q = URLDecoder.decode(info.getOriginalUrl(), "UTF-8");
System.out.println("Request: "+q);
return null;
});
server.addResponseFilter((response, content, info) -> {
String type = response.headers().get("Content-Type");
System.out.println("Response: "+info.getOriginalRequest());
System.out.println(type);
});
Proxy proxy = ClientUtil.createSeleniumProxy(server);
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability(CapabilityType.PROXY, proxy);
capabilities.setCapability("marionette", true);
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
capabilities.setCapability(CapabilityType.SUPPORTS_JAVASCRIPT, true);
FirefoxProfile fp = new FirefoxProfile();
capabilities.setCapability(FirefoxDriver.PROFILE, fp);
String gecko = "d:/Programming/java/geckodriver.exe";
System.setProperty("webdriver.gecko.driver", gecko);
driver = new FirefoxDriver(capabilities);
driver.get("https://google.com");;
Run Code Online (Sandbox Code Playgroud)
在Firefox 51和较低,存在硒3的GeckoDriver错误/丢失功能,可防止火狐从拿起设定时,代理服务器设置CapabilityType.PROXY在上DesiredCapabilities对象.
但是,您仍然可以直接在上设置代理设置FirefoxProfile.在BMP的一项测试中有一个例子.由于您已经在使用FirefoxProfile对象,因此这对您来说可能是一个明智的解决方案.它看起来像这样(根据需要用localname/ip地址替换localhost):
FirefoxProfile fp = new FirefoxProfile();
fp.setPreference("network.proxy.http", "localhost");
fp.setPreference("network.proxy.http_port", server.getPort());
fp.setPreference("network.proxy.ssl", "localhost");
fp.setPreference("network.proxy.ssl_port", server.getPort());
fp.setPreference("network.proxy.type", 1);
fp.setPreference("network.proxy.no_proxies_on", "");
Run Code Online (Sandbox Code Playgroud)
这个geckodriver问题还讨论了CapabilityType.PROXY在DesiredCapabilities对象上使用的一些其他替代方法.
UPDATE
根据mozilla bug报告,这个问题在Firefox 52中得到修复,计划于 2017年3月7日发布.与此同时,解决方案FirefoxProfile应该与51(和更低)一起工作,并且还应该继续工作52岁以上.
| 归档时间: |
|
| 查看次数: |
4150 次 |
| 最近记录: |