使用java测量网页的总加载时间

时间:2015-12-16 20:37:22

标签: java selenium webdriver

我正在创建一个应用程序来检查页面加载所需的时间。到目前为止,我有这样的事情:

long startTime = System.currentTimeMillis();
//load page and wait for it to finish
long elapsedTime = System.currentTimeMillis() - startTime;

现在,我不只想测量html文档加载的时间,而是整个dom。基本上,如果它在浏览器中,我希望它能够测量加载微调器停止所需的时间。

我怎样才能做到最好?我正在尝试WebDriver,但它似乎并不一致;有时它会在仍然加载东西时考虑完成页面(我也尝试过隐式等待)。

3 个答案:

答案 0 :(得分:7)

获得Load时间如下: Chromium Load time

运行以下脚本:

import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class AutomationTests {

  public static void main(String[] args) {
    WebDriver driver = new ChromeDriver();
    driver.get("http://www.google.com");
    final JavascriptExecutor js = (JavascriptExecutor) driver;
    // time of the process of navigation and page load
    double loadTime = (Double) js.executeScript(
        "return (window.performance.timing.loadEventEnd - window.performance.timing.navigationStart) / 1000");
    System.out.print(loadTime + " seconds"); // 5.15 seconds
  }
}

要在从服务器收到页面后更改页面加载所需的时间:
window.performance.timing.navigationStartwindow.performance.timing.responseEnd

在Firefox和Chrome上测试。

答案 1 :(得分:1)

在这种情况下,您需要等到显示某个元素。像这样:

long startTime = System.currentTimeMillis();

driver.get("Some url");

WebElement ele = driver.findElement(By.id("ID of some element"));

long endTime = System.currentTimeMillis();
long elapsedTime = endTime - startTime ;

System.out.println("Total Time for page load - " + totalTime); 

答案 2 :(得分:1)

如果您使用Selenide框架,它已经包含一个功能,可以为您提供所有页面组件的计时。

enter image description here