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