2012-07-06 15 views
8

Tôi đang cố gắng kiểm tra thời gian tải của một danh sách các trang web theo chương trình. Mục đích là để mô phỏng khoảng thời gian tải trang mà người dùng sẽ nhận thấy.Cách đúng để kiểm tra thời gian tải trang trong selen?

tiếp cận đầu tiên của tôi là để gọi sau bên trong một vòng lặp:

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

Vấn đề là đôi khi tôi nhận được kết quả thời gian trước khi trang đã thực sự nạp (tức tôi nhận được 50ms lần) vì vậy tôi đoán sự kiểm soát đang được giao cho hướng dẫn tiếp theo trước khi driver.get() hoàn tất.

Tôi nên làm gì để cải thiện bài kiểm tra này?

EDIT:

Như user1258245 đề nghị tôi có thể chờ đợi một yếu tố để tải nhưng vấn đề là tôi không biết đó là trang bị ốm được tải trước.

+0

Xem http://stackoverflow.com/questions/6112863/timing-page-load-times- in-selenium – Avery

Trả lời

13

Có 2 cách để thực hiện việc này sẽ cung cấp cho bạn dữ liệu có ý nghĩa.

  1. Sử dụng proxy của trình duyệt với Selenium. Đây là một ví dụ trong python nhưng khá của nó cũng tương tự trong Java

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

File HAR được trả về từ proxy.har, mà chỉ là một blob JSON, sẽ cung cấp cho bạn những thông tin mà bạn cần. Tôi blogged về nó vào đầu năm nay

  1. Cách tiếp cận khác là sử dụng thông số định thời điều hướng có sẵn trong trình duyệt hiện đại. Tất cả những gì bạn cần làm là thực hiện một số JavaScript và bạn sẽ nhận được thông tin chi tiết của tải trang, vv

    ((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

Tuyệt vời! Tôi sẽ đi với số 1 (cái đầu tiên :). Tôi nghĩ rằng tôi sẽ chỉ phân tích cú pháp các tập tin HAR (chỉ cần kiểm tra và nó chỉ là json) và kết quả đầu ra bản thân mình. Rất cảm ơn vì sự giúp đỡ của bạn. – cookM

Các vấn đề liên quan