webBrowser.DocumentCompleted Timing

时间:2012-02-09 12:44:58

标签: c# webbrowser-control

我们如何计算时间?我的意思是当按下它时它应该开始(时间)和完成加载页面而不是停止。当你在谷歌搜索时,它显示你需要多长时间。在图像上我展示了我想要的东西

foreach (string bug in bugs)
{
    webBrowser.Navigate(new Uri(url));
    webBrowser.Document.GetElementById("product").SetAttribute("value", product);
    webBrowser.Document.GetElementById("version").SetAttribute("value", version);
    webBrowser.Document.GetElementById("commit").InvokeMember("click");

    //Need code to wait for page to load before continuing.
}

Google Timing

2 个答案:

答案 0 :(得分:1)

这很简单,首先,NC = NavigateComplete事件,DC = DocumentComplete事件,WB是程序中WebBrowser1(或WebBrowser)控件的名称。

现在,您基本上可以得到第一个NC事件的滴答数(或时间),以及最后一个DC事件的滴答(或时间),并从DC时间中减去NC时间。此外,当NC被触发时,你想要在NC事件中检查pDisp属性,如果它等于WB.object - 如果是,则告诉你它是页面上的顶级文档,如果存在帧,则会很有用,因为会出现多个帧。此外,最重要的是,顶级文档NC事件总是首先出现。

其次,顶级文档DC事件总是最后发生,因此在进行DC计时之前,请检查以确保pDisp与DC事件中的WB.object是同一对象。

要进行检查,在VB中它如下(类似于C#):

执行此检查并在NC事件中节省时间,并对DC事件执行相同操作,同时将时间保存在第二个全局变量中,以便稍后可以减去它们。

NC事件:

If pDisp Is WB.object Then
  ' I use this API, but there are better ways to do this in .NET,
  ' such as DateTime.Now.
  tNCTime = GetTickCount() 
End If

DC事件:

If pDisp Is WB.object Then
  ' I use this API, but there are better ways to do this in .NET,
  ' such as DateTime.Now.
  tDCTime = GetTickCount()

  ' You can do this elsewhere, but here is fine too, since when this occurs,
  ' we know loading is done.
  tResult = tDCTime - tNCTime ' More details on this below...

End If

声明应该放在某个地方的全局模块中,具体取决于代码的结构,当然,如果它们都在同一个命名空间中,则不需要全局。

Dim tNCTime As DateTime
Dim tDCTime As DateTime
' Below Only if using DateTime.Now, declare as Integer if you're using Tick Counts.
Dim tResult As TimeSpan

现在,执行WB.object检查的优势在于它还会告诉您网页何时完成加载:)...所以在DC事件的IF然后结束如果检查,您可以进行计算:)。凉爽?

如果你使用滴答计数,它以毫秒为单位,所以不要忘记除以1000以便在几秒内得到它,并确保将其保存为双精度或小数,因为整数或长整数会导致溢出。 / p>

如果这对您有用,并且我已正确理解您的问题,请告诉我。如果还有其他任何我可以提供的帮助,请告诉我。我喜欢回馈这个帮助我的网站上的人们。 (hola @Hans Passant,如果你正在阅读hehe)。

PS: 此外,顺便说一句,由于您是新用户,如果这回答了您的问题,请不要忘记接受“答案”,因此不会再出现在“未答复”部分。

答案 1 :(得分:0)

为什么不使用 的document.cookie ="&#34 ;; 存储页面的请求时间和页面加载从存储的cookie中获取时间并与当前时间进行比较以获得差异并显示它