2012-04-17 10 views
0

私のプログラムでwebbrowserコントロールを使用していますが、サイトに移動した後、webbrowserのドキュメントを使用してgetelementbyidのような要素を取得しようとしました。いくつかの要素が欠落しています。Webブラウザのドキュメントが不完全なようです

私はいくつかのjavascriptによって要素が動的にページに挿入されていることを知っています。

私はそれらの要素を取得するメソッドを検索し、私はそれらのページに実行されるjavascriptを注入し、window.externalメソッド(またはちょうどアラートで試して)いくつかの要素を返しますが、このスクリプトが実行された場合でもそれらは、元のコードのドキュメント上のメソッドと同じ結果を返します。

Internet ExplorerでF12キーを押してアクセスするのと同じように、プログラムのこの「不可視」要素に何らかの方法でアクセスする方法がありますか? あなたの答えに感謝し、私のベッドの英語のために申し訳ありません。

は、ここに私のコードです:

 private void button2_Click(object sender, EventArgs e) 
    { 
     //injecting and executing my javascript code 
     HtmlElement head = webBrowser1.Document.GetElementsByTagName("head")[0]; 
     HtmlElement scriptEl = webBrowser1.Document.CreateElement("script"); 
     IHTMLScriptElement element = (IHTMLScriptElement)scriptEl.DomElement; 
     element.text = "function sayHello() { window.external.f1(document.getElementsByTagName('html')[0].innerHTML); }"; 
     head.AppendChild(scriptEl); 
     webBrowser1.Document.InvokeScript("sayHello"); 


     String v; 
     System.IO.StreamWriter file = new System.IO.StreamWriter("c:\\test.txt"); 
     foreach (HtmlElement k in webBrowser1.Document.GetElementsByTagName("html")) 
     { 
      v= k.OuterHtml; 
      file.WriteLine(v); 
     } 

     file.Close(); 

    } 
    [ComVisible(true)] 
    public class MyScript { 
    //function called by the javascript  
    public void f1(string s) 
    { 
     System.IO.StreamWriter file = new System.IO.StreamWriter("c:\\test2.txt"); 
     file.WriteLine(s); 
     file.Close(); 
    } 
    } 

実行両方の試験終了時とTEST2は同じHTMLは、いくつかの要素が欠落しているだった持っています。

答えて

0

あなたはより具体的に質問してください。ここでは、問題が発生したコードをここに示します。おそらく、文書の右側部分にアクセスしていない可能性があります。

関連する問題