私のプログラムで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は、いくつかの要素が欠落しているだった持っています。