[英]Raising another WebBrowser DocumentCompleted()
似乎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
}
您無法“重播”文檔完成事件。 感覺您的頁面實際上是在使用某些JavaScript進行渲染,而當瀏覽器完成加載HTML /腳本/圖像時,從您的角度來看,它並不是真正的“完整”。 這對於現代頁面來說很常見。
在這種情況下,定期檢查您期望在頁面上進行的檢查(即類似於您已經擁有的檢查)可能是最簡單的選擇。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.