Создание другого веб-браузера DocumentCompleted () - PullRequest
1 голос
/ 26 января 2012

Похоже, что событие 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
}    

1 Ответ

1 голос
/ 26 января 2012

Вы не можете «воспроизвести» событие завершения документа.Чувствуется, что ваша страница на самом деле использует JavaScript для рендеринга и на самом деле не «завершена» с вашей точки зрения, когда браузер завершил загрузку HTML / scripts / images.Это довольно распространено для современных страниц.

Периодическая проверка того, что вы ожидаете увидеть на странице (т. Е. Аналогично проверке, уже имеющейся у вас), может быть самым простым вариантом в этом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...