簡體   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