2012-02-09 5 views
0

Как рассчитать время? Я имею в виду, что при нажатии клика он должен начинаться (время) и при завершении загрузки страницы, чем останавливаться. когда вы ищете в google, он показывает вам, сколько времени потребуется. на изображении я показать то, что я хочуwebBrowser.DocumentCompleted Timing

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

+0

Не могли бы вы более подробно объяснить, что именно вы хотите? Вы говорите об щелчке, но ваш код имеет «Navigate()», и какой из них? И вы хотите знать, сколько времени потребовалось для создания страницы (это показывает Google) или сколько времени требуется для ее загрузки? Кроме того, комментарий вашего кода запрашивает нечто совершенно иное, чем текст вашего вопроса. Который из них? – svick

+0

http://searchru.anextour.com/searchresult.aspx на этом сайте, когда вы нажимаете «искать» (это обычный поиск), форма ajax собирается загружаться. Я хочу рассчитать, сколько времени занимает загрузка формы axaj. –

+0

И это ваш сайт или вы к нему обращаетесь? Как связанный с этим код? Если это ваш сайт, можете ли вы показать нам соответствующие части кода, который обрабатывает запрос AJAX? – svick

ответ

1

Ну это довольно легко, первый, NC = NavigateComplete событие, и DC = DocumentComplete событие, и ВБ является WebBrowser1 (или WebBrowser) имя элемента управления в вашей программа.

Теперь вы в основном получаете количество тиков (или времени) первого события ЧПУ и тики (или время) последнего события постоянного тока, и вы вычитаете время ЧПУ из DC-времени. Кроме того, когда NC запускается, вы хотите проверить в событии NC свойство pDisp, и если оно равно WB.object - если это так, это говорит о том, что это документ верхнего уровня на странице, что полезно, если являются кадрами, так как больше одного произойдет. Кроме того, самое главное, событие NC верхнего уровня всегда встречается первым.

Во-вторых, документы DC верхнего уровня всегда встречаются последними, поэтому вы проверяете, чтобы pDisp был тем же самым объектом, что и WB.object, в событии постоянного тока, прежде чем вы берете время синхронизации по постоянному току.

Для проверки, в VB это следующим образом (аналогично в C#):

ли эта проверку и сэкономить время в случае NC, и сделать то же самое для случая постоянного тока при сохранении времени второго глобальном переменная, конечно, поэтому вы можете вычесть их позже.

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, что он также говорит вам, когда веб-страница выполняется загрузка:) ... так что в случае, если событие питания постоянного тока Тогда End If чека, вы можете поместить расчет :). Круто?

Если вы используете количество меток в миллисекундах, то не забудьте разделить его на 1000, чтобы получить его за считанные секунды, и убедитесь, что он сохранен как двойной или десятичный, так как целое или длинное приведет к переполнению.

Сообщите мне, если это сработало для вас, и если я правильно понял ваш вопрос. Если есть что-то еще, что я могу сделать, чтобы помочь, дайте мне знать. Мне нравится возвращаться к людям на этом сайте, которые мне очень помогли. (hola @ Hans Passant, если вы читаете хе-хе).

PS: Кроме того, поскольку вы новый пользователь, пожалуйста, не забудьте принять его как «Ответ», если это ответит на ваш вопрос, поэтому он не будет подпадать под раздел «Без ответа» дольше.

0

почему вы не используете документ.печенье = ""; , чтобы сохранить время запроса для страницы и на странице загрузки получить форму времени сохраненного cookie и сравнить с текущим временем, чтобы получить разницу и отобразить его