[英]Raising another WebBrowser DocumentCompleted()
似乎WebBrowser_DocumentCompleted()
事件有时不是很足够,对我来说就是这种情况。 我正在创建几个用于自动化检查的报告网页(当前为5个),并且对于每个页面,此事件很快就会运行一次。 如果页面没有完成,我想知道最好的方法是使DocumentCompleted()
继续运行。
我试过检查ReadyState和URL,以查看它们是否在我的automationExec()
函数中匹配,并且这毫无用处,ReadyState已完成且URL匹配。 不过,这并不是问题,我只需要检查页面上的页脚标记是否存在,因此就不必覆盖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
}
您无法“重播”文档完成事件。 感觉您的页面实际上是在使用某些JavaScript进行渲染,而当浏览器完成加载HTML /脚本/图像时,从您的角度来看,它并不是真正的“完整”。 这对于现代页面来说很常见。
在这种情况下,定期检查您期望在页面上进行的检查(即类似于您已经拥有的检查)可能是最简单的选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.