2012-05-25 7 views
17

मैं अपने वेब अनुप्रयोगों का परीक्षण करने के लिए सेलेनियम 2/वेबड्राइवर का उपयोग कर रहा हूं। सभी परीक्षण जावा में लिखे गए हैं और मेवेन के साथ चलते हैं।वेबड्राइवर में पृष्ठ द्वारा किए गए सभी अनुरोधों को कैप्चर कैसे करें? क्या ब्राउरबोब के लिए कोई विकल्प है?

वेबड्राइवर के साथ एक पृष्ठ खोलते समय मैं पृष्ठ (छवियों, जेएस और सीएसएस फाइलों, आदि) द्वारा किए गए सभी अनुरोधों को कैप्चर करना चाहता हूं। मैं कॉल

  • अगर एनालिटिक्स कोड (अगर यह उचित अनुरोध भेज रहा है की जाँच)
  • के आधार पर काम कर रहा है की जाँच में दो कारणों से

    • 404 (और अन्य त्रुटियों) के लिए जाँच के लिए मुख्य रूप से इस डेटा का उपयोग प्रोजेक्ट मैं नेटक्सपोर्ट या ब्राउरबोब प्रॉक्सी के साथ फ़ायरबग का उपयोग करता हूं। दोनों मामलों में मैं आसानी से एक एचएआर (एचटीएमएल आर्किविव) फ़ाइल प्राप्त कर सकता हूं, इसे पार्स कर सकता हूं और इच्छित डेटा निकाल सकता हूं।

      यहां समस्या है: मैं इनमें से किसी भी समाधान से खुश नहीं हूं। मुझे विशेष रूप से एचएआर फ़ाइल प्राप्त करने में समस्याएं होती हैं जब किसी पृष्ठ में वीडियो होता है जिसे बहुत लंबा लोड किया जा रहा है। मैं कुछ और स्थिर की तलाश में हूं।

      तो, सवाल कर रहे हैं:

      वहाँ Browsermob के लिए किसी भी विकल्प है? मैं फिडलरकोर के बारे में जानता हूं लेकिन यह एक .NET पुस्तकालय है और मेरे परीक्षण जावा में लिखे गए हैं। मैंने अजाक्स डायनाट्रेस के बारे में भी सुना है और मुझे पता है कि सेलेनियम के साथ इसे एकीकृत करने का कोई तरीका है लेकिन मुझे मिले दस्तावेज सेलेनियम-आरसी वेबड्राइवर नहीं थे।

      क्या वेबड्राइवर के साथ डायनाट्रेस को एकीकृत करने या जावा के साथ फिडलरकोर का उपयोग करने का कोई तरीका है?

      क्या मेरे द्वारा वर्णित लक्ष्यों को प्राप्त करने का कोई अन्य तरीका है? मैं एक प्रॉक्सी की तलाश में हूं कि मैं आसानी से अपने कोड से नियंत्रण कर सकता हूं। एचएआर में डेटा निर्यात करना एक बड़ा प्लस होगा।

    +0

    आप एक सी # वेब सेवा बनाने का उपयोग करें और यह जावा – Indraneel

    उत्तर

    10

    मुझे एक Google समूह चर्चा on the topic मिली। ये लिंक Browsermob करने के लिए वैकल्पिक का वादा की तरह लग रहे:

    +0

    से कॉल कर सकते हैं मैं इस सवाल का जवाब बहुत ही उपयोगी पाया: http://stackoverflow.com/a/20984973/661414 – Leukipp

    5

    42+ ver फ़ायरफ़ॉक्स के साथ एक विकल्प नहीं है, वहाँ ऐड-ऑन फ़ायरफ़ॉक्स HarExport

    File harExportApi = new File(System.getProperty("user.dir") 
            + "/src/main/resources/firebug/harexporttrigger-0.5.0-beta.7.xpi"); 
    
    netExportProfile.addExtension(harExportApi); 
    netExportProfile.setPreference("extensions.netmonitor.har.enableAutomation", true); 
        netExportProfile.setPreference("extensions.netmonitor.har.contentAPIToken", "test"); 
        netExportProfile.setPreference("extensions.netmonitor.har.autoConnect", true); 
    
    cap.setCapability(FirefoxDriver.PROFILE, netExportProfile); 
    
    कहा जाता है

    और निम्नलिखित स्क्रॉल चलाना IPT हम सभी को अनुरोध प्रतिक्रियाओं

    दे देंगे
    String getHarLogScript = "var options = {\n" + 
           " token: \"test\",\n" + 
           " getData: true,\n" + 
           " title: \"my custom title\",\n" + 
           " jsonp: false,\n" + 
           " };\n" + 
           "\n" + 
           " HAR.triggerExport(options).then(result => {\n" + 
           " var har = JSON.parse(result.data);\n" + 
           "\n" + 
           " // Use performance.timing to provide onContentLoad\n" + 
           " + 
           "  + 
           " var t = performance.timing;\n" + 
           " var pageTimings = har.log.pages[0].pageTimings;\n" + 
           " pageTimings.onContentLoad = t.domContentLoadedEventStart - t.navigationStart;\n" + 
           " pageTimings.onLoad = t.loadEventStart - t.navigationStart;\n" + 
           "\n" + 
           " window.HarEntries=har.log.entries\n" + 
           "\n" + 
           " console.log(\"HAR log (\" + result.data.length + \") \", har.log);\n" + 
           " }, err => {\n" + 
           " console.error(err);\n" + 
           " });" 
    
    LOG.info("Loading HAR log entries object into browser HarEntries object"); 
    SeleniumUtils.executeScript(driver, getHarLogScript); 
    
    harEntries = ((List<Object>) SeleniumUtils.executeScript(driver, "return window.HarEntries")); 
    
    +0

    मैंने कोशिश की उपरोक्त कोड। यह कहता है ~ org.openqa.selenium.JavascriptException: ReferenceError: HAR परिभाषित नहीं किया गया है ~ मैं इस निर्भरता को कैसे शामिल करूं? सेलेनियम 3.0.0, एफएफ 51, मैक ओएस। – user2649233

    संबंधित मुद्दे

     संबंधित मुद्दे