引发另一个WebBrowser DocumentCompleted()

本文关键字:DocumentCompleted WebBrowser 另一个 | 更新日期: 2023-09-27 18:21:31

WebBrowser_DocumentCompleted()事件有时似乎不是很充分,对我来说就是这样。我正在创建几个用于自动化检查的报告网页(目前为5个),此事件很快就会为每个网页运行一次。如果页面还没有完成,我想知道让DocumentCompleted()继续运行的最佳方法是什么。

我已经尝试在我的automationExec()函数中检查ReadyState和URL是否匹配,但这毫无价值,ReadyState已完成,URL匹配。不过,这并不是问题,我可以检查页面上是否存在页脚标记,因此不需要覆盖ReadyStateWebBrowserDocumentCompletedEventArgs.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
}    

引发另一个WebBrowser DocumentCompleted()

您不能"回放"文档完成事件。感觉你的页面实际上是在使用一些JavaScript进行渲染,当浏览器加载完HTML/scripts/images时,从你的角度来看并不是真正的"完整"。这在现代页面中很常见。

在这种情况下,定期检查页面上的内容(即类似于您已经进行的检查)可能是最简单的选择。

相关文章:
  • 没有找到相关文章