2012-07-06 7 views
8

मैं प्रोग्राम की वेबसाइटों की सूची के लोड समय का परीक्षण करने की कोशिश कर रहा हूं। इसका उद्देश्य पृष्ठ लोड समय को मोटे तौर पर अनुकरण करना है जिसे उपयोगकर्ता समझ जाएगा।सेलेनियम में पेज लोड समय का परीक्षण करने का सही तरीका?

मेरा पहला दृष्टिकोण एक पाश अंदर निम्नलिखित कॉल करने के लिए है:

startTime = System.currentTimeMillis(); 
    driver.get("http://" + url); 
    diff = System.currentTimeMillis() - startTime; 
    System.out.println("Load time was " + diff); 

समस्या को कभी-कभी मैं समय परिणाम प्राप्त करने से पहले पेज वास्तव में भरी हुई है (यानी मैं 50ms बार) ताकि मैं नियंत्रण लगता है driver.get() पूरा होने से पहले अगले निर्देश को सौंप दिया जा रहा है।

इस परीक्षण को बेहतर बनाने के लिए मुझे क्या करना चाहिए?

संपादित करें:

user1258245 के रूप में सुझाव दिया मैं लोड करने के लिए एक तत्व के लिए इंतजार कर सकता है लेकिन समस्या यह है कि मैं जो पृष्ठों बीमार पहले से लोड हो रहा है हो सकता है पता नहीं है है।

+0

http://stackoverflow.com/questions/6112863/timing-page-load-times- देखें मिल जाएगा है इन-सेलेनियम – Avery

उत्तर

13

ऐसा करने के 2 तरीके हैं जो आपको सार्थक डेटा देंगे।

  1. सेलेनियम के साथ ब्राउज़र्मोब प्रॉक्सी का उपयोग करें। यह अजगर में एक उदाहरण है लेकिन इसकी काफी जावा

    from browsermobproxy import Server 
    server = Server("path/to/browsermob-proxy") 
    server.start() 
    proxy = server.create_proxy() 
    
    from selenium import webdriver 
    profile = webdriver.FirefoxProfile() 
    profile.set_proxy(proxy.selenium_proxy()) 
    driver = webdriver.Firefox(firefox_profile=profile) 
    
    proxy.new_har("google") 
    driver.get("http://www.google.co.uk") 
    proxy.har # returns a HAR JSON blob 
    
    proxy.stop() 
    driver.quit() 
    

कि proxy.har से दिया जाता है, जो सिर्फ एक JSON ब्लॉब है HAR फाइल में एक ही, आपको जानकारी है कि आप की जरूरत है दे देंगे। मैं इसके बारे में blogged इस साल के

  1. अन्य दृष्टिकोण नेविगेशन समय कल्पना आधुनिक ब्राउज़रों में उपलब्ध उपयोग करने के लिए है। सभी कि आप क्या करने की जरूरत कुछ JavaScript निष्पादित और आप पृष्ठ लोड का ब्यौरा आदि

    ((JavascriptExecutor)driver).executeScript("var performance = window.performance || {};" + 
          "var timings = performance.timing || {};"+ 
          "return timings;"); 
    
    /* The hashmap returned will contain something like the following. 
    * The values are in milliseconds since 1/1/1970 
    * 
    * connectEnd: 1280867925716 
    * connectStart: 1280867925687 
    * domainLookupEnd: 1280867925687 
    * domainLookupStart: 1280867925687 
    * fetchStart: 1280867925685 
    * legacyNavigationStart: 1280867926028 
    * loadEventEnd: 1280867926262 
    * loadEventStart: 1280867926155 
    * navigationStart: 1280867925685 
    * redirectEnd: 0 
    * redirectStart: 0 
    * requestEnd: 1280867925716 
    * requestStart: 1280867925716 
    * responseEnd: 1280867925940 
    * responseStart: 1280867925919 
    * unloadEventEnd: 1280867925940 
    */ 
    
+0

यह बढ़िया है! मैं नंबर 1 के साथ जाऊंगा (पहला वाला :) :)। मुझे लगता है कि मैं सिर्फ एचएआर फ़ाइल को पार्स करूंगा (बस चेक किया गया है और यह सिर्फ जेसन है) और परिणाम खुद को आउटपुट करता है। आपकी मदद के लिए बहुत धन्यवाद। – cookM

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

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