如何在我的c#窗口表单中自动输入一个上传表单

本文关键字:表单 一个 输入 我的 窗口 | 更新日期: 2023-09-27 18:07:08

我有一个带有文件上传对话框的网页。我正在从Windows窗体应用程序中的WebBrowser控件查看此页面。我想要自动输入并提交表单。

我意识到这个问题以前被问过(很多次)。我见过太多了,我都数不清了。但是没有一个方法对我有效。

My网页看起来像

<form method="post" enctype="multipart/form-data">
   <input id="file" name="file" type="file"/>
   <input type="submit"/>
</form

我的c#应用程序看起来像

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
    {
        webBrowser1.Document.GetElementById("file").Focus();
        SendKeys.Send("C:''Users''Merlin Sweden''Desktop''extraDirTest''myImage.jpg{ENTER}");
    }
}

从我尝试过的所有事情中,至少感觉我离成功越来越近了。无论如何,在执行时,打开对话框并输入部分路径(weden'Desktop'extraDirTest'myImage.jpg)。我认为这可能是某种最大输入长度,我在路径中添加了另一个目录(extraDirTest),并发现这不是问题。

所以我认为它与空间有关,但我找不到任何替代进入空间。另外,如果我发送的PATH不正确,对话框根本不会打开。如果我在表单上放置一个文本框并尝试在其中输入它,那么一切都可以正常工作。

我不明白发生了什么事,也不知道该如何解决。

有人能帮我吗?

谢谢

编辑也许值得一提的是,将文件移动到"C:'myImage.jpg"并改变路径并没有做任何事情。

如何在我的c#窗口表单中自动输入一个上传表单

只输入一半的原因是因为'focus'没有触发对话框。是空间。因此,对话框只在空格后打开,之后发送的任何内容都将进入。

由于某种原因,空格后面的字符也被省略了,可能与计时有关。

我最后做了

SendKeys.Send("  C:''extraDirTest''sednasoftwaread.jpg{ENTER}");

之后您也不能立即提交表单,因为表单将在填写输入之前提交。睡觉也不是答案,因为对话一直在睡觉。使用计时器,表单可以在输入后提交。

谢谢大家的帮助!