簡體   English   中英

Webbrowser控件未顯示HTML,但顯示了網頁

[英]Webbrowser control is not showing Html but shows webpage

我正在使用webbrowser控件自動化任務,該站點使用框架顯示頁面。 我的問題是,我可以看到在webbrowser控件上正確加載了網頁,但是當它進入代碼並且看到html時,我什么也看不到。

我在這里也看到了其他示例,但是所有這些示例都不會返回所有瀏覽器html。

我通過使用這個得到什么:

                    HtmlWindow frame = webBrowser1.Document.Window.Frames[1];
                    string str = frame.Document.Body.OuterHtml;

只是 :

具有諸如SRC標簽等屬性的主框架標簽,有什么方法可以處理此問題?因為我可以看到網頁已完全加載,為什么我在Internet Explorer上看到HTML時卻看不到html?AS頁面源一旦加載,為什么不在這里?

附加信息

頁面上有兩個框架:

我如上所述

HtmlWindow frame = webBrowser1.Document.Window.Frames [0];

        string str = frame.Document.Body.OuterHtml;

我為第一幀獲得了正確的HTMl,但是對於第二幀,我只看到了:

<FRAMESET frameSpacing=1 border=1 borderColor=#ffffff frameBorder=0 rows=29,*><FRAME title="Edit Search" marginHeight=0 src="http://web2.westlaw.com/result/dctopnavigation.aspx?rs=WLW12.01&amp;ss=CXT&amp;cnt=DOC&amp;fcl=True&amp;cfid=1&amp;method=TNC&amp;service=Search&amp;fn=_top&amp;sskey=CLID_SSSA49266105122&amp;db=AK-CS&amp;fmqv=s&amp;srch=TRUE&amp;origin=Search&amp;vr=2.0&amp;cxt=RL&amp;rlt=CLID_QRYRLT803076105122&amp;query=%22LAND+USE%22&amp;mt=Westlaw&amp;rlti=1&amp;n=1&amp;rp=%2fsearch%2fdefault.wl&amp;rltdb=CLID_DB72585895122&amp;eq=search&amp;scxt=WL&amp;sv=Split" frameBorder=0 name=TopNav marginWidth=0 scrolling=no><FRAME title="Main Document" marginHeight=0 src="http://web2.westlaw.com/result/dccontent.aspx?rs=WLW12.01&amp;ss=CXT&amp;cnt=DOC&amp;fcl=True&amp;cfid=1&amp;method=TNC&amp;service=Search&amp;fn=_top&amp;sskey=CLID_SSSA49266105122&amp;db=AK-CS&amp;fmqv=s&amp;srch=TRUE&amp;origin=Search&amp;vr=2.0&amp;cxt=RL&amp;rlt=CLID_QRYRLT803076105122&amp;query=%22LAND+USE%22&amp;mt=Westlaw&amp;rlti=1&amp;n=1&amp;rp=%2fsearch%2fdefault.wl&amp;rltdb=CLID_DB72585895122&amp;eq=search&amp;scxt=WL&amp;sv=Split" frameBorder=0 borderColor=#ffffff name=content marginWidth=0><NOFRAMES></NOFRAMES></FRAMESET>

更新

框架的兩個網址如下:

我看到其HTML的Frame1

http://web2.westlaw.com/nav/NavBar.aspx?RS=WLW12.01&VR=2.0&SV=Split&FN=_top&MT=Westlaw&MST=

Frame2的html我看不到:

http://web2.westlaw.com/result/result.aspx?RP=/Search/default.wl&action=Search&CFID=1&DB=AK%2DCS&EQ=search&fmqv=s&Method=TNC&origin=Search&Query=%22LAND+USE%22&RLT=CLID%5FQRYRLT302424536122&RLTDB=CLID%5FDB6558157526122&Service=Search&SRCH=TRUE&SSKey=CLID%5FSSSA648523536122&RS=WLW12.01&VR=2.0&SV=Split&FN=_top&MT=Westlaw&MST=

下圖顯示的是我無法獲取html的第二幀的屬性:

在此處輸入圖片說明

謝謝

我為上述問題的解決方案付費,並且可以100%使用。

我所做的是使用下面的此函數,它使我將計數返回到要查找的標簽,而我找不到:S。使用此函數可以調用下面列出的函數:

FillFrame(webBrowser1.Document.Window.Frames);



private void FillFrame(HtmlWindowCollection hwc)
        {


            if (hwc == null) return;
            foreach (HtmlWindow hw in hwc)
            {
                HtmlElement getSpanid = hw.Document.GetElementById("mDisplayCiteList_ctl00_mResultCountLabel");
                if (getSpanid != null)
                {

                    doccount = getSpanid.InnerText.Replace("Documents", "").Replace("Document", "").Trim();

                    break;
                }

                if (hw.Frames.Count > 0) FillFrame(hw.Frames);
            }


        }

希望它能幫助人們。

謝謝

對於采用html,您必須這樣做:

        WebClient client = new WebClient();
        string html = client.DownloadString(@"http://stackoverflow.com");

當然,這是一個示例,您可以更改地址。 順便說一句,您需要使用System.Net。

這很好用...使BODY元素具有所有內部元素:

表單代碼中的某處:

wb.Url = new Uri("http://stackoverflow.com");
wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wbDocumentCompleted);

這是wbDocumentCompleted:

void wb1DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    var yourBodyHtml = wb.Document.Body.OuterHtml;
}

wb是System.Windows.Forms.WebBrowser

更新:

在相同的文檔,我認為你的第二個框架是不是你檢查它的內容時加載的......你可以嘗試從解決這個鏈接。 您必須等待框架加載才能看到其內容。

最可能的原因是幀索引0與主/父頁面具有相同的域名,而幀索引1具有不同的域名。 我對么?

這會造成跨框架的安全問題,而WB控件只會讓您高高在干,而不會告訴您到底出了什么問題,而只是讓您的對象,屬性和數據為空(將在窗口中顯示“無變量”嘗試擴展對象時,請觀看窗口)。

在這種情況下,您唯一可以訪問的就是URL和iFrame屬性,但iFrame內部沒有任何內容。

當然,有一些方法可以解決跨框架安全問題-但它們並未內置在WebBrowser控件中,它們是外部解決方案,具體取決於您使用的是哪個WB控件(如.NET版本或.NET之前的版本)版)。

讓我知道我是否正確識別了您的問題,如果可以,請讓我告訴您有關為WB控件的設置和實例量身定制的解決方案的信息。

更新 :我注意到您正在執行.getElementByTagName(“ HTML”)(0).outerHTML以獲取HTML,您所需要做的就是在文檔對象或.body對象上調用此方法,並且應該這樣做它。 MyDoc.Body.innerHTML應該獲得所需的內容。 另外,請注意,如果相關,這些文檔中還有其他iFrame。 您能否給我們提供包含這兩個URL的主文檔URL,以便我們/我可以在這里復制您的操作? 另外,不確定為什么要使用DomElement,但應該將其轉換為要轉換為的本機對象,即IHTMLDocument2或在監視窗口中看到的對象,我認為這是IHTMLFrameElement(如果我沒記錯的話,但是一旦您看到它,您就會知道我的意思。 如果您嘗試使用XML對象,這可能就是為什么您無法獲取HTML內容,更改對象聲明並進行強制轉換(如果有的話),然后繼續執行並讓我們知道的原因:)。 現在我也很好奇:)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM