2012-08-15 21 views
6

के साथ http POST अनुरोधों को कैप्चर करने के लिए कैसे हैलो हैलोमोब प्रॉक्सी + सेलेनियम परीक्षण ढांचे का उपयोग कर HTTP पोस्ट अनुरोध में वास्तविक पोस्ट डेटा को कैप्चर करने का प्रयास कर रहा है। तो मूल रूप से मैं सेलेनियम का उपयोग कर एक स्वचालित परीक्षण चला रहा हूं और मैं परीक्षण के दौरान HTTP POST अनुरोध के कुंजी/मूल्य जोड़े और वास्तविक POST डेटा को कैप्चर करना चाहता हूं। निम्न तर्क का उपयोग करके मैं केवल पोस्ट हेडर के कुंजी/मान जोड़े को कैप्चर कर सकता हूं लेकिन वास्तविक पोस्ट डेटा नहीं (फॉर्म फ़ील्ड आईडी मान उर्फ)। वास्तव में POSTDATA को कैप्चर करने का कोई तरीका है (जैसे अनुप्रयोगों को स्नीफ करना जैसे फ़ायरफ़ॉक्स में टैपर/लाइव हेडर)?browsermob-proxy और सेलेनियम

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

फिर उत्पादन वास्तविक HAR फ़ाइल:

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()); 
     } 

    } 
}); 

एक वैकल्पिक रास्ता नहीं मैं के बारे में पढ़ा है, लेकिन काम करने के लिए नहीं मिल सका सत्य पर browsermob प्रॉक्सी सर्वर में निम्नलिखित झंडे कॉन्फ़िगर करने के लिए था

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

कुंजी/मूल्य जोड़े, पोस्ट डेटा, और प्रतिक्रिया की वास्तविक सामग्री देखने के लिए ... लेकिन जब मैं HAR फ़ाइल को पार्स करता हूं ... मैं केवल पोस्ट हेडर के कुंजी/मान जोड़े को देखता हूं ... कोई पोस्ट डेटा नहीं ... कोई respon से सामग्री हालांकि मुझे वास्तविक पोस्ट डेटा में दिलचस्पी है।

+4

मेरे वर्कस्पेस में browsermob प्रॉक्सी प्रोजेक्ट को जांचने के बाद अंततः यह पता नहीं लगा। proxyServer.setCaptureContent (true) और proxyServer.setCaptureHeaders (true) केवल HAR obj के अंदर पोस्ट पैरा को कैप्चर करने के लिए काम करना चाहिए। ProxyServer.addRequestInterceptor पोस्ट पैरा को कैप्चर नहीं करेगा। – Selwyn

+0

यह टिप्पणी वास्तव में एक जवाब होना चाहिए। लेकिन टिप्पणी के लिए धन्यवाद! –

उत्तर

0

मुझे भी एक ही समस्या थी। एक समाधान के रूप में, मैंने सभी डेटा पर कब्जा कर लिया, एचएआर फ़ाइल को जेएसओएन में परिवर्तित कर दिया, और उसके बाद JSON फ़ाइल से केवल POST अनुरोधों को फ़िल्टर किया।