我正在尝试从 C# 应用程序中导航到带有隐藏浏览器的页面,单击链接并验证单击是否有效。流程: - 导航到“http://mypage” - 点击一个链接,链接的 HTML 代码是(调用 ComponentArt 回调):
<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>
将中介更改为(同时在回调中添加逻辑):
<img src="/images/loading.gif">
最后应该改为:
<br>Is your colleague</br>
任何人都知道 WebBroser.Print() 中发生了什么使页面完全完成回调?