【发布时间】:2010-11-09 15:23:46
【问题描述】:
我正在尝试从 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 = 新的 WebBrowser(); tempIE.Navigate("http://mypage"); 而(tempIE.ReadyState!= WebBrowserReadyState.Complete) { 应用程序.DoEvents(); } tempIE.AllowNavigation = true; HtmlElement addDivTag = tempIE.Document.GetElementById("ctl00_ctl00_PlaceHolderMain_Colleague1_linkAdd"); if (addDivTag == null) throw (new Exception("Session.FollowPerson: 找不到添加标签")); if ( addDivTag.FirstChild == null ) throw (new Exception("Session.FollowPerson: 找不到添加链接")); addDivTag.FirstChild.InvokeMember("点击"); 而(tempIE.ReadyState!= WebBrowserReadyState.Complete) { 应用程序.DoEvents(); }在此之后,我正在验证 ComponentArt 服务器回调是否更改了其中一个标签,但只获取了中间标签。我正在监控的变化是:
<a href="javascript:void(0)">Add colleague</a>
将中介更改为(同时在CallBack中进行添加逻辑):
<img src="/images/loading.gif">
最后应该改成:
<br>Is your colleague</br>
任何人都知道 WebBroser.Print() 中发生了什么使页面完全完成回调?
【问题讨论】:
标签: c# events callback browser componentart