C#アプリケーション内から非表示のブラウザーを使用してページに移動し、リンクをクリックして、クリックが機能したことを確認しようとしています。フロー:-「http:// mypage」に移動します-リンクをクリックすると、リンクHTMLコードは(ComponentArt CallBackを呼び出します):
<div id="ctl00_ctl00_PlaceHolderMain_Colleague1_linkAdd" onclick="colleagueCallback.callback('SOMENAME'); return false;">
同僚を追加します-クリックが結果を取得してページを更新するのを待ちます-クリックが機能したことを確認します
私の問題:WebBroser.Print()を呼び出さない限り、クリックは完全には完了していないようです(これは必要ありません。クリック後に何が起こっているかを理解するために何百万もの方法を試しただけで、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:Addタグが見つかりませんでした")); if(addDivTag.FirstChild == null) throw(new Exception( "Session.FollowPerson:追加リンクが見つかりませんでした")); addDivTag.FirstChild.InvokeMember( "click"); while(tempIE.ReadyState!= WebBrowserReadyState.Complete) {{ Application.DoEvents(); }
この後、タグの1つがComponentArtサーバーのCallBackによって変更されたかどうかを確認していますが、中間タグのみを取得しています。私が監視している変更は次のとおりです。
<a href="javascript:void(0)">Add colleague</a>
中間を(コールバックで追加ロジックを作成している間)に変更します:
<img src="/images/loading.gif">
最終的には次のように変更する必要があります。
<br>Is your colleague</br>
ページがコールバックを完全に完了するようにするWebBroser.Print()でどのようなexacltyが行われているのか誰もが知っていますか?