【问题标题】:Right way to test page load time in selenium?在硒中测试页面加载时间的正确方法?
【发布时间】:2012-07-06 10:55:01
【问题描述】:

我正在尝试以编程方式测试网站列表的加载时间。目的是粗略地模拟用户将感知到的页面加载时间。

我的第一种方法是在循环中调用以下内容:

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

问题是有时我在页面真正加载之前得到时间结果(即我得到 50 毫秒时间)所以我猜在 driver.get() 完成之前控制权被交给下一条指令。

我应该怎么做才能改进这个测试?

编辑:

正如 user1258245 建议的那样,我可以等待一个元素加载,但问题是我不知道事先会加载哪些页面。

【问题讨论】:

标签: java selenium delay web-testing


【解决方案1】:

有两种方法可以为您提供有意义的数据。

  1. 将 Browsermob 代理与 Selenium 一起使用。这是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()
    

proxy.har 返回的 HAR 文件(它只是一个 JSON blob)将为您提供所需的信息。我在今年早些时候 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
     */ 
    

【讨论】:

  • 太好了!我会选择 1 号(第一个 :)。我想我只会解析 HAR 文件(刚刚检查过,它只是 json)并自己输出结果。非常感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-15
  • 1970-01-01
  • 2019-12-08
  • 2015-03-06
  • 1970-01-01
  • 2017-04-12
相关资源
最近更新 更多