2016-12-11 9 views
2

私はBMPのRequestFilterとResponseFilterを使用してレスポンスとリクエストを取得しようとしています。しかし、Webページがロードされると、コンソールには何も印刷されません。
他のすべてがうまくいくようです。たぶんBMPはGeckoDriverを見ていないのでしょうか?
Firefox 50.0、BrowserMobProxy 2.1.2、Selenium 3.0.1、GeckoDriver 0.11.1を使用しています
テストコードは以下のとおりです。誰かが私を助けてくれますか?
ありがとうございました! Firefoxの51と下にBrowserMobProxy、Selenium、Firefox、marionette/geckoを使用したリクエストと応答の取得

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

答えて

5

DesiredCapabilitiesオブジェクトにCapabilityType.PROXYを設定するときにプロキシ設定を拾ってからFirefoxのを防ぐセレン3のGeckoDriverのバグ/欠けている機能があります。

ただし、プロキシ設定をFirefoxProfileに直接設定することはできます。 one of BMP's testsに例があります。既にFirefoxProfileオブジェクトを使用しているので、これはおそらくあなたにとって賢明な解決策になります。

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

This geckodriver issue

DesiredCapabilitiesオブジェクトに CapabilityType.PROXYを使用するいくつかの他の選択肢について説明します。それはこのような何か(必要に応じて、ホスト名/ IPアドレスとローカルホストを交換する)になります。

UPDATE

mozilla bug reportによれば、この問題は、一方で3月7日2017年にscheduled to be releasedあるのFirefox 52に固定され、FirefoxProfile有する溶液51(および以下)で動作するはずですまた、52+以上で作業し続ける必要があります。

関連する問題