Javascript 作为自动化测试的一部分,监视特定的js事件以及执行这些事件所需的时间?

Javascript 作为自动化测试的一部分,监视特定的js事件以及执行这些事件所需的时间?,javascript,performance,testing,selenium,automated-tests,Javascript,Performance,Testing,Selenium,Automated Tests,我试图找到一种可靠的方法来测试一个webapp,以获得某些性能指标。webapp主要使用Javascript进行各种操作/请求等 我想能够做的是测量两个特定事件之间的时间,例如,在我登录到站点后,某个东西出现在用户面前所需的时间量-目前,我可以使用Selenium Webdriver进行近似计算,如下所示: WebElement element4 = driver.findElement(By.linkText("Login")); element4.click(); long start =

我试图找到一种可靠的方法来测试一个webapp,以获得某些性能指标。webapp主要使用Javascript进行各种操作/请求等

我想能够做的是测量两个特定事件之间的时间,例如,在我登录到站点后,某个东西出现在用户面前所需的时间量-目前,我可以使用Selenium Webdriver进行近似计算,如下所示:

WebElement element4 = driver.findElement(By.linkText("Login"));
element4.click();

long start = System.currentTimeMillis();
WebElement element5 = wait3.until(ExpectedConditions.visibilityOfElementLocated(By.linkText("New")));

long finish = System.currentTimeMillis();
long time = finish - start;
System.out.println("Time taken for New element to load: " + time + "ms");
或使用:

WebElement element6 = driver.findElement(By.linkText("New"));  
代替

wait3.until(ExpectedConditions.visibilityOfElementLocated(By.linkText("New")));
然而,这将给出的结果通常并不准确。我想知道的是,是否有一种方法可以使用Selenium更准确地实现这一点,或者是否有另一种工具可以用来可靠地以可管理的格式获取这些数据


谢谢

您需要多少准确度?总有一个误差幅度,你必须为你的场景定义可接受的误差幅度

在这种情况下,可能会有一小部分开销,例如由于Selenium本身(特别是在运行远程WebDriver时)。我想可能还有其他随机的外部因素也会影响它

也就是说,您可以通过运行“校准”测试来提高准确性,该测试将帮助您确定您自己的测试环境/设置固有的误差裕度

您的校准可能如下所示:

  • 打开正在测试的页面
  • 等到所有东西都装好
  • 测量您知道已经存在的元素等待.until()所需的时间
  • 重复(3)多次以获得一些统计显著性
  • 在最后你有一个测量列表。例如,得到它的中间值,你就知道在你运行真正的测试时,你需要从你测量的延迟中减去多少。或者,您可以简单地添加误差裕度和标准偏差,作为附加到性能测试结果的额外信息

    请注意,对于Selenium,使用哪种方法在页面上查找元素也会有所不同(例如,按ID查找可能比按“linkText”查找快),因此您可能需要增强上面的步骤3,以测量所有不同元素查找机制的
    wait.until()
    错误