5

可能是这个问题在过去被问过,但我已经搜索并没有找到它的解决方案。

我已经尝试了到目前为止我发现的所有选项,但都是徒劳的。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("click"); 它打开选择一个文件上传对话框/弹出窗口,我卡住了,因为我不知道如何动态填充该弹出窗口,然后在文件输入框中插入文件路径。

4

1 回答 1

0

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

于 2013-03-11T10:37:41.497 回答