如果我的目标是通过重复加载来测试特定网页的IE中的渲染速度(仅仅使用javascript onload事件进行计时并且查看页面不会削减它),那么这将是一个很好的方法它?
我目前的尝试是在VB和C#中使用IE WebBrowser对象,尽管我对其他建议持开放态度。
下面是一些简单的VB代码,虽然我在C#中尝试了类似的东西。我也尝试为每个测试创建一个新的Web浏览器控件(这使事情变得更糟)。我也尝试过使用事件而不是使用readystate循环。在所有情况下,测试运行的时间越来越长,尽管使用reload
navigate2
的完整instread似乎有点帮助,或许暗示问题是某种历史问题。
For cnt = 1 To 100
timer = GetTickCount()
Form1.WebBrowser1.Navigate2 "http://www.example.com"
While Form1.WebBrowser1.ReadyState <> READYSTATE_COMPLETE And GetTickCount() - timer < 5000
Sleep 50
DoEvents
Wend
Debug.Print GetTickCount() - timer
Next
答案 0 :(得分:-1)
我认为更好的方法是处理Webbrowser控件公开的OnBeforeNavigate和OnDocumentComplete事件。在OnBeforeNavigate中设置一个计时器并在OnDocumentComplete中将其停止。
现在你正在忙着等待,这绝不是一个好主意。
答案 1 :(得分:-1)
我不确定你可以在开始和结束的控件上挂起什么事件,但这里是我在单元测试中使用的代码来计算我的引擎处理我给它的数据所花费的时间。
Stopwatch stopWatch = new Stopwatch();
stopWatch.Start();
//perform work
stopWatch.Stop();
TimeSpan ts = stopWatch.Elapsed;
string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",
ts.Hours,
ts.Minutes,
ts.Seconds,
ts.Milliseconds/10);
Console.Write(elapsedTime);
干杯!