2012-01-25 5 views
1

WebBrowser_DocumentCompleted()イベントは時にはあまり適切ではないようで、私にとってはこれが当てはまりました。私は自動化チェックのためのいくつかのレポートWebページを作成しています(現在は5)、このイベントはこれらのページごとに1回、すぐに実行されます。ページが完成していない場合は、DocumentCompleted()を実行し続けるのが最善の方法であると思います。別のWebブラウザーを作成する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 
}  
+0

"イベントはあまり適切ではありません"問題の非常に明確な説明ではありません。コンテンツを非同期的にレンダリングするページで問題が発生していますか(「ドキュメントが完成した後のいつか」など) –

+0

問題は、ページが完了する前にDocumentCompleted()イベントが実行されることです。ページを完全に完成させる必要があります。または、XHTMLで自動テストを実行するとデータが失われます。私は、DocumentCompleted()イベントがフレームごとに1回実行されるか、他の技術がJavaScriptのように関わっているときに実行される可能性があると聞いています。そして、私はこれらのレポートページにJavaScriptがあります。私はDocumentCompleted()をまっすぐなHTMLで試していません。その場合、ページが実際に終了するまで実行するのを待っています。 – CraigElf

+0

ここではJavascriptが問題です。DocumentCompletedイベントが発生した後*実行されます。それが何をしているのか、それが「完全」なのかを知る方法はありません。ほとんどの場合、実際には完了していないため、DOMイベントのために追加のJSが実行されます。タイマーでポーリングするだけで、DOMの変更を監視できます。 –

答えて

1

ドキュメントの完了イベントを再生することはできません。あなたのページのような感じは、実際にJavaScriptを使用してレンダリングしており、ブラウザがHTML /スクリプト/イメージの読み込みを完了した時点であなたの視点からは本当に「完全」ではありません。これは現代のページでは非常に一般的です。

この場合、ページ上にあると予想される何かが定期的に確認されている(つまり、既に確認済みのものと同じように)のが最も簡単なオプションかもしれません。

+0

ご協力ありがとうございます。 – CraigElf

関連する問題