【问题标题】:Entering text in website textbox using c#使用 C# 在网站文本框中输入文本
【发布时间】:2015-11-30 20:06:30
【问题描述】:

我正在尝试用 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");
    }

网页正在打开,但文本框未填充指定值。我也尝试过内部文本而不是 setAttribute。我正在使用 Windows 窗体。

【问题讨论】:

  • 你要做什么,打开一个网站,填写一个或多个输入值的值
  • @lordkain 是的,这正是我想做的。
  • 您想打开浏览器,还是将结果保存到文件中?或者别的什么

标签: c# web automation


【解决方案1】:

您希望您的webBrowser 将在指定地址加载页面,但实际上您的代码将启动默认浏览器(指向“http://www.google.co.in”),而 webBrowser.Document 将保持null

尝试将Process.Start替换为

webBrowser.Navigate(yourUrl);

【讨论】:

  • 仍然有同样的错误,但对于以前的进程。启动程序打开了网页,但导航网页没有打开,它直接出现错误。
【解决方案2】:

消除 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,并且有一些您可以避免的开销。

【讨论】:

    猜你喜欢
    • 2014-05-31
    • 1970-01-01
    • 1970-01-01
    • 2013-08-11
    • 1970-01-01
    • 2020-12-17
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多