如何获取WebPage中当前AJAX调用的列表以及如何以编程方式跟踪(如果已完成)

时间:2012-10-12 01:05:33

标签: java testing selenium webdriver

我有一个有趣的测试问题 我的要求是在网站上进行性能测试。

此处发布以获取加载网页的实时时间(我正在测试)。单词REAL time在这里指的是完成所有(初始)AJAX调用所需的总时间(带有一些响应)。我想过使用Page Load Event 但这种方法并没有给出实时性 任何建议如何做任何参考信息也很棒!


我的环境:Java和WedDriver。

2 个答案:

答案 0 :(得分:0)

使用时间戳标记您的请求对象,并在收到相应的响应时从systime中减去该值。

根据您的方法,您可以使用具有<T>有效负载的通用请求/响应对象和服务器端的分路器。然后,这些通用对象可以包含用于自动注册发送和接收时间的代码,并提供花费在客户端上的时间。使用这种方法聚合整个页面加载所花费的时间有点棘手,但我认为并非几乎不可能 - 如果请求也使用原始页面标记,RPC代理可能会跟踪它。

如果您要提供一些设置/代码的具体示例,我可能会更精确。

干杯,

答案 1 :(得分:0)

正如大家所说,WebDriver不适合性能。但是,请参阅我有时使用的以下方法。

如果您可以针对某些特定的webelement捕获性能,则以下代码将起作用,可以是divspan块。

1 使用任何秒表。我正在使用apache秒表。

import org.apache.commons.lang3.time.StopWatch;

2 初始化变量

StopWatch timer = new StopWatch();

3 启动计时器,然后在下一行导航到您的页面。我更喜欢driver.navigate().to()而不是driver.get()因为我觉得它减少了调用新网址的其他处理时间。

timer.start();
driver.navigate().to(URL); 

4 等待可以指定页面加载完成的特定元素。一旦出现,在下一行停止计时器。

new WebDriverWait(driver, 10).until(ExpectedConditions. presenceOfElementLocated(By.className("demoClass")));
timer.stop();
System.out.println("timer.getTime() + " milliseconds");

其他注意事项:如果您想知道任何特定网络频段加载的网络电话的加载时间,请使用phantomJS之类的webkit或browsermobproxy之类的内容。它将在HAR / JSON文件中返回网络调用。解析这些文件,你可以抽出时间。

希望这有帮助。