有时似乎WebBrowser_DocumentCompleted()
事件不是很充足,对我来说情况就是这样。我正在创建几个用于自动化检查的报告网页(目前为5个),并且这个事件很快就会运行一次,每个页面都有。如果页面没有完成,我想知道让DocumentCompleted()
继续运行的最佳方法是什么。
我已经尝试检查ReadyState和URL以查看它们是否与我的automationExec()
函数匹配,而且这一点毫无价值,ReadyState已完成且网址匹配。这不是一个问题,但我可以检查页面上是否存在页脚标记,因此ReadyState
和WebBrowserDocumentCompletedEventArgs.Url
不需要被覆盖。
private void openReport(UnitTestType unitTest)
{
BrowserPopup testBrowser = new BrowserPopup();
WebBrowser reportBrowser = new WebBrowser();
...
reportBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(automationExec);
testBrowser.CreateWindow(reportBrowser, "QA Automation", unitTest.hash); //creates browser window
}
private void automationExec(object sender, WebBrowserDocumentCompletedEventArgs e)
{
WebBrowser reportBrowser = (WebBrowser)sender;
//footer, version tag
if (reportBrowser.Document.Body.FirstChild.NextSibling.NextSibling.FirstChild.FirstChild.FirstChild.NextSibling == null)
{
reportBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(automationExec);
//i'm not sure how to re-raise DocumentCompleted event now that it has occured
return;
}
//report is complete, perform automation tests
}
答案 0 :(得分:1)
您无法“重播”文档完整事件。感觉就像你的页面实际上使用了一些JavaScript进行渲染,并且当浏览器加载HTML /脚本/图像时,从你的角度来看并不是真正的“完整”。这在现代页面中很常见。
在这种情况下,定期检查您希望在页面上显示的内容(即类似于您已经拥有的内容)可能是最简单的选项。