2015-03-07 3 views
-1
webBrowser1.Document.GetElementById("UserName").InnerText = user; 
webBrowser1.Document.GetElementById("Password").InnerText = pass; 
webBrowser1.Document.GetElementById("btnLogin").InvokeMember("Click"); 
Thread.Sleep(2000); 
webBrowser1.Document.GetElementById("games").InvokeMember("Click"); 

Этот код прямо здесь не работает. В основном мне нужен «период ожидания» между тем временем, когда веб-браузер нажимает кнопку для входа в систему и время, которое он нажимает на вкладку игр. Это происходит из-за того, что он нажимает кнопку входа в систему и пытается попасть на вкладку игр до того, как страница загрузится, вызвав нулевую ошибку.Создание паузы между выполнением кода?

Proper way to add delay in my code execution

Я смотрел много нитей, как это и все, что они советуют использовать Thread.Sleep(), который не работает. Когда я пытаюсь использовать таймеры, код продолжает дуть прямо через tt и не ждать вообще. Я ищу создать паузу между двумя сегментами кода, которые будут ждать загрузки страницы, а затем перейдите на вкладку игр.

+0

что вы пытаетесь достичь? автоматизированный клиентский тест? – Sphaso

+0

Если вы выполняете автоматизированный клиентский тест, какую структуру вы используете? Я настоятельно рекомендую вам НЕ использовать 'Thread.Sleep()' –

+1

, вам следует искать событие Document_Complete для управления веб-браузером. –

ответ

1

Для этого вы можете использовать событие WebBrowser.DocumentCompleted. Documentation

Происходит, когда элемент управления WebBrowser заканчивает загрузку документа.

Coding пример:

webBrowser1.DocumentCompleted+= new WebBrowserDocumentCompletedEventHandler(ActivateGameButon); // < = Bind the event to occur when Document id fully loaded 

// You can define what to occur inside the event 
void ActivateGameButon(object sender, WebBrowserDocumentCompletedEventArgs e) 
{ 
    // This happens after document is fully loaded 

    HtmlElement gameElement; 

    // To be on safe side, we check for element existence too 
    if((gameElement=webBrowser1.Document.GetElementById("games"))!=null){ 
     gameElement.InvokeMember("Click"); 
    } 

} 
+1

Хорошая отправная точка. Как правило, это не помогает OP, так как в большинстве случаев динамическая часть страницы будет создана после этого события. –

Смежные вопросы