正确的方法来测试页面加载时间的硒?(Right way to test page load time

2019-06-26 02:08发布

我试图以编程测试的网站列表的加载时间。 目的是为了大致模拟网页加载时间,用户将察觉。

我的第一种方法是调用一个循环中执行以下操作:

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

问题是,有时我得到的时间结果的页面确实加载之前(即我得到50ms的时间),所以我想控制被交给之前的下一条指令driver.get()已完成。

我应该怎么做才能提高这个测试?

编辑:

作为user1258245建议我可以等因素来加载,但问题是我不知道是哪个网页生病预先加载。

Answer 1:

有2个办法做到这一点,会给你有意义的数据。

  1. 使用Browsermob代理硒。 这是一个Python的例子,但它几乎是在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() 

这是从返回的HAR文件proxy.har ,这仅仅是一个JSON BLOB,会给你你需要的信息。 我在博客今年早些时候它

  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 */ 


文章来源: Right way to test page load time in selenium?