2012-02-11 33 views
0

私は、Webブラウザコントロールを使用してタスクを自動化しています。 私の問題は、WebブラウザがWebブラウザのコントロールに正しく読み込まれていることがわかりますが、コードに入るとHTMLが表示されます。WebブラウザコントロールはHTMLを表示していませんが、Webページを表示します

私はここでも他の例を見てきましたが、それらのすべてがブラウザのHTMLを返すわけではありません。

何私はこれを使用して取得:?SRCタグなどのような属性を持つメインフレームタグは、これを処理する方法をどのような方法があるので、私としてそこにある

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

するだけですなぜ私はHTMLを見ていないのですか?私がインターネットエクスプローラでそれをすると、私はページソースが一度ロードされたのを見ますか?

追加情報

ページ上の2つのフレームがあります。私は、上記のようにこれを使用

HtmlWindowフレーム= webBrowser1.Document.Window.Frames [0] ;

 string str = frame.Document.Body.OuterHtml; 

は、私は最初のフレームのための正しいHTMLを取得しますが、1秒間私は以下を参照してください。

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

UPDATEフレームの2つのURLとしてある

次のとおりです。

フレーム1のhtmlは

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

そのHTML私は見ていないフレーム2:

enter image description here

感謝:

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私は取得しない以下の画像にある第2のフレームのプロパティあなた

+0

ありがとう、私は、答えを投稿それを読み取りを与え、私たちはあなたのための解決策を見つけることができますしました:)。 –

+0

@ Erx_VB.NExT.Coder任意のヘルプ:) – confusedMind

答えて

0

私は上記の質問の解決のために支払われ、それが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); 
      } 


     } 

・ホープそれは人々を助ける。

あなたの問題は、クロスフレームセキュリティの問題である

0

htmlを取るためには、あなたはそうする必要があります:

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

これはもちろん例ですが、アドレスを変更することができます。ところで、あなたはSystem.Netを使用する必要があります;

+0

こんにちは、私はそれだけでも何かを解決したとは思わない..:X – confusedMind

0

これはうまくいきます...どこか自分のフォームのコードで

: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

UPDATEです文書と同じですが、私はあなたがR第二フレームは、あなたがそれの内容を確認する時にロードされていません...あなたはthisリンクから解決策を試すことができます。あなたはその内容を見るためにあなたのフレームがロードされるのを待たなければなりません。

+0

私はそれがフレームタグを取ると言って、フレームのinnerhtmlはしかし、それはウェブページに表示されています:S // – confusedMind

+0

私はあなたがフレームに問題があることを忘れました。私の更新された答えを見てください:)。それでも問題が解決しない場合は、あなたの質問にあなたの正確なコードを載せてください。間違っていることが他にもあるかもしれないからです。 –

0

最も可能性が高い理由は、フレームインデックス1が別のドメイン名を持っていながら、フレームインデックス0は、メイン/親ページと同じドメイン名を持っているということです。私は正しいですか?

これはフレーム間のセキュリティの問題を引き起こし、WBコントロールは気をつけて、何が悪くなったのかを伝えず、オブジェクト、プロパティ、およびデータを空白にします(「いいえオブジェクトを展開しようとすると、ウォッチウィンドウの[Variables]が表示されます)。あなたはこのような状況でアクセスすることができ

唯一のことはかなりのiFrame内のURLとiframeのプロパティ、何もです。

もちろん、クロスフレームセキュリティの問題を克服する方法がありますが、WebBrowserコントロールには組み込まれていません.WBコントロール(.NETバージョンまたは.NETの前のバージョン)。

あなたの問題を正しく識別したかどうか知りたい場合には、セットアップ&のWBコントロールのインスタンスに合わせて解決策を教えてください。

UPDATE:私はあなたが.getElementByTagName(「HTML」)をやっていることに気づいた(0).outerHTMLはHTMLを取得するために、あなたがする必要があるすべては、ドキュメントオブジェクト、または上でこれを呼んでいます。体のオブジェクトとそれはそれを行う必要があります。 MyDoc.Body.innerHTMLは必要なコンテンツを取得する必要があります。また、関連性がある場合は、これらのドキュメントの中に追加のiFrameがあることに注意してください。この2つのURLを持つメインのドキュメントURLを教えてもらえますか?ここで行っていることを複製できますか?また、わからないなぜあなたはDOMELEMENTを使用しているが、あなたはちょうどそれがにキャストしたいネイティブオブジェクトにキャストする必要があり、どちらか私が正しくリコール場合、(IHTMLFrameElementだと思うIHTMLDocument2か、ウォッチウィンドウに表示オブジェクト、一度見たらどういう意味なのか分かります)。あなたがXMLオブジェクトを使用しようとしている場合は、これが存在する場合、オブジェクトの宣言とキャストを、HTMLコンテンツを取得変更することはできません理由も、それは&は:)私たちに知らせて行く与えることができます。今私も好奇心が強いです:)。

+0

こんにちは、助けていただきありがとうございます:)親切に上記の質問の説明を参照してください。私はそれを更新しました:) – confusedMind

+0

私は解決策を投稿しました:)、ありがとう – confusedMind

関連する問題