繁体   English   中英

引发另一个WebBrowser DocumentCompleted()

[英]Raising another WebBrowser DocumentCompleted()

似乎WebBrowser_DocumentCompleted()事件有时不是很足够,对我来说就是这种情况。 我正在创建几个用于自动化检查的报告网页(当前为5个),并且对于每个页面,此事件很快就会运行一次。 如果页面没有完成,我想知道最好的方法是使DocumentCompleted()继续运行。

我试过检查ReadyState和URL,以查看它们是否在我的automationExec()函数中匹配,并且这毫无用处,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
}    

您无法“重播”文档完成事件。 感觉您的页面实际上是在使用某些JavaScript进行渲染,而当浏览器完成加载HTML /脚本/图像时,从您的角度来看,它并不是真正的“完整”。 这对于现代页面来说很常见。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM