2012-08-15 4 views
6

erfassen Hallo versucht, die tatsächlichen POST-Daten in einer HTTP-POST-Anfrage mit Browsermob Proxy + Selen Test Framework zu erfassen. Im Grunde genommen benutze ich einen automatisierten Test mit Selen und ich möchte die Schlüssel/Wert-Paare und die tatsächlichen POST-Daten einer HTTP-POST-Anfrage während des Tests erfassen. Mit der folgenden Logik kann ich nur die Schlüssel/Wert-Paare des POST-Headers erfassen, aber nicht die tatsächlichen POST-Daten (auch bekannt als die Formularfeld-ID-Werte). Gibt es eine Möglichkeit, die POSTDATA tatsächlich zu erfassen (wie Sniffing-Anwendungen wie Tamper/Live-Header in Firefox)?Wie HTTP-POST-Anfragen mit Browsermob-Proxy und Selenium

ProxyServer proxyServer = null; 
proxyServer = new ProxyServer(9101); 
proxyServer.start(); 

proxyServer.setCaptureContent(true); 
proxyServer.setCaptureHeaders(true); 

Proxy proxy = proxyServer.seleniumProxy(); 
proxy.setHttpProxy("localhost:9101"); 

//selenium test config code, omitted for brevity 

proxyServer.addRequestInterceptor(new HttpRequestInterceptor() { 
public void process(HttpRequest request, HttpContext context) throws HttpException, IOException { 
    Header[] headers = request.getAllHeaders(); 
    System.out.println("\nRequest Headers\n\n"); 
     for(Header h : headers) { 
      System.out.println("Key: " + h.getName() + " | Value: " + h.getValue()); 
     } 

    } 
}); 

Eine alternative Art und Weise gelesen, ich aber nicht an der Arbeit konnte, war die folgenden Flags im browsermob Proxy-Server auf true zu konfigurieren:

proxyServer.setCaptureContent(true); 
proxyServer.setCaptureHeaders(true); 

Dann Ausgabe der tatsächliche HAR-Datei:

Har har = proxyServer.getHar(); 
Date date = new Date(); 
har.writeTo(new File("c:\\tmp\\har_" + date.getTime())); 

Um die Schlüssel/Wert-Paare, POST-Daten und tatsächlichen Inhalt der Antwort zu sehen ... aber wenn ich die HAR-Datei analysieren ... Ich sehe nur die Schlüssel/Wert-Paare der POST-Header wieder ... keine POST-Daten ... keine Antwort se Inhalt. Ich bin nur an den eigentlichen POST-Daten interessiert.

+4

Nie zuvor herausgefunden dies schließlich nach dem Auschecken des Browsermob-Proxy-Projekts in meinem Arbeitsbereich. Die Adressen proxyServer.setCaptureContent (true) und proxyServer.setCaptureHeaders (true) sollten nur POST-Parameter innerhalb des HAR-Objekts erfassen. Der ProxyServer.addRequestInterceptor erfasst die POST-Parameter NICHT. – Selwyn

+0

Dieser Kommentar sollte wirklich eine Antwort sein. Aber danke für den Kommentar! –

Antwort

0

Ich hatte auch das gleiche Problem. Als Lösung habe ich alle Daten erfasst, die HAR-Datei in JSON konvertiert und dann nur POST-Anfragen aus der JSON-Datei herausgefiltert.