我正在尝试使用c#自动填充网站的文本框,并使用:
private void button1_Click(object sender, EventArgs e)
{
System.Windows.Forms.WebBrowser webBrowser = new WebBrowser();
HtmlDocument document = null;
document=webBrowser.Document;
System.Diagnostics.Process.Start("http://www.google.co.in");
document.GetElementById("lst-ib").SetAttribute("value", "ss");
}
网页正在打开,但文本框未填充指定的值。我也尝试过innertext而不是setAttribute。我正在使用Windows窗体。
答案 0 :(得分:2)
您希望webBrowser
将页面加载到指定的地址,但实际上您的代码将启动默认浏览器(指向“http://www.google.co.in”),而webBrowser.Document将保留{{1 }}
尝试将null
替换为
Process.Start
答案 1 :(得分:0)
消除Process.Start()语句(由Gian Paolo建议),因为它将WebBrowser作为外部进程启动。
您的代码存在的问题是您希望过快地操纵元素的值。等待网站完全加载:
private void button1_Click(object sender, EventArgs e)
{
System.Windows.Forms.WebBrowser webBrowser = new WebBrowser();
webBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser_DocumentCompleted);
webBrowser.Navigate("http://www.google.co.in");
}
private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
webBrowser.document.GetElementById("lst-ib").SetAttribute("value", "ss");
}
请注意,使用WebBrowser实例通常不是解决问题的最佳方法。它使用了大量的RAM,并且可以避免一些开销。