如何使用C#中的webbrowser通过文件输入框上传文件

时间:2013-02-02 17:44:23

标签: c# webbrowser-control

可能过去曾问过这个问题,但我已经搜索过,但尚未找到解决方案。

我已经尝试了迄今为止我发现的所有选项,但都是徒劳的。 SendKeys不起作用,因为它没有用文件路径填充文件输入框,即要上传。 无法设置文件输入框“SetAttribute”值,因为没有可用的值属性:

这就是全部。

如果我使用element.focus(),它会弹出“选择要上传的文件”对话框,现在我不知道如何以编程方式填写它并在文件输入框中打开它。

我希望它自动完成,以便用户不必与应用程序进行交互。 应用程序将从给定文件路径中的硬盘中选择文件并填写表单的其他字段然后开始上传,所有这些都使用Windows窗体应用程序中的webbrowser控件。

找不到解决方案!

有人可以帮忙吗? (这是我关于stackoverflow的第一个问题,因此如果我做错了那么请指导,我的意思是如果我不被允许发布这样的问题!)

以下是代码:

        HtmlElementCollection heCollection = doc.GetElementsByTagName("input");
        foreach (HtmlElement heSpan in heCollection)
        {
          string strType = heSpan.GetAttribute("type");
          string strName = heSpan.GetAttribute("name");
          if (strType.Equals("file") && strName.Equals("file"))
          {
            heSpan.Focus();
            //heSpan.SetAttribute("value", "test.jpg");
            SendKeys.Send("C:\\1.txt");
            //heSpan.InnerText = "c:\\1.txt";
          }

          //Title for the attachment
          if (strName.Equals("field_title"))
          {
            heSpan.InnerText = "1.txt";
          }
        }

执行此代码时,光标在精细输入框中开始闪烁(因为我设置了heSpan.focus()),但文件路径未显示在文件输入框中。 如果我实施     heSpan.InvokeMember( “点击”); 它打开选择一个文件来上传拨号/弹出窗口,然后我卡住了,因为我不知道如何动态填充弹出窗口然后在文件输入框中插入文件路径。

1 个答案:

答案 0 :(得分:0)

在将焦点设置为输入字段之前,请尝试将焦点设置到WebBrowser控件。 这对我有用。