我们如何计算时间?我的意思是当按下它时它应该开始(时间)和完成加载页面而不是停止。当你在谷歌搜索时,它显示你需要多长时间。在图像上我展示了我想要的东西
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.
}
答案 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中获取时间并与当前时间进行比较以获得差异并显示它