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

Yaa*_*ver 5 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";
          }
        }
Run Code Online (Sandbox Code Playgroud)

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

use*_*er6 0

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