Я пытаюсь перейти на страницу со скрытым браузером из приложения C #, щелкнуть ссылку и убедиться, что щелчок сработал.
Поток:
- перейдите к "http://mypage"
- нажмите на ссылку, HTML-код ссылки (вызывающий ComponentArt CallBack):
<div id="ctl00_ctl00_PlaceHolderMain_Colleague1_linkAdd" onclick="colleagueCallback.callback('SOMENAME'); return false;">
Добавить коллегу
- дождитесь клика, чтобы получить результат и обновить страницу
- убедитесь, что щелчок сработал
Моя проблема:
Кажется, что щелчок не завершен полностью, если только я не вызову WebBroser.Print () (который мне не нужен, только что попробовал миллион способов выяснить, что происходит после щелчка, только Печать завершает щелчок).
Код, который работает абсолютно нормально, навигация работает, он может найти теги, которые я ищу, событие нажатия срабатывает (я получаю промежуточное изменение), но обратный вызов не завершается, как оказалось, только используя WebBrowser.Print (), все остальные WebBrowser.Invalidate (), WebBrowser.Update (), WebBrowser.DocumentStream.Flush () или WebBroser.ResumeLayout () не будут завершать обратный вызов ASP внутри страницы ...:
tempIE = new WebBrowser();
tempIE.Navigate("http://mypage");
while (tempIE.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
tempIE.AllowNavigation = true;
HtmlElement addDivTag = tempIE.Document.GetElementById("ctl00_ctl00_PlaceHolderMain_Colleague1_linkAdd");
if (addDivTag == null)
throw (new Exception("Session.FollowPerson: could not find the Add tag"));
if ( addDivTag.FirstChild == null )
throw (new Exception("Session.FollowPerson: could not find the add link"));
addDivTag.FirstChild.InvokeMember("click");
while (tempIE.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
После этого я проверяю, был ли один из тегов изменен CallBack сервера ComponentArt, но только получаю промежуточный тег. Изменение, которое я отслеживаю:
<a href="javascript:void(0)">Add colleague</a>
изменит посредника на (при создании логики добавления в CallBack):
<img src="/images/loading.gif">
в конце должно измениться на:
<br>Is your colleague</br>
Кто-нибудь знает, что именно происходит в WebBroser.Print (), который заставляет страницу полностью завершить обратный вызов?