首页 > 解决方案 > .NET Windows 窗体 - 与从 webview2 打开的网站文件对话框交互

问题描述

我在 .NET Framework Windows 窗体应用程序中使用 webview2 自动将文件上传到网站。该网站一次只支持上传一个文件,我们经常需要上传数百个文件。我在 webview2 中使用了 java 脚本来执行上传的步骤。

我的问题是,要指定要上传的文件,我必须与在 webview 中的网站单击按钮时打开的文件对话框进行交互。我目前正在使用 SendKeys 在文件对话框中填充要上传的文件的路径,我认为这是一个糟糕的过程。

有没有一种方法可以与通过我的 Windows 窗体应用程序从网站创建的文件对话框进行交互?如果是这样,我将如何开始弄清楚如何做到这一点?

以下是有关我目前正在做的事情的更多详细信息:

在 web 视图中,要开始上传,您必须单击几个复选框来选择上传选项,每次都必须这样做,所以我首先运行这些命令:

await webview2.ExecuteScriptAsync($"document.getElementById('SelectedTypeId').click();");
await webview2.ExecuteScriptAsync($"document.getElementById('AutoAcceptChkbox').click();"); 

然后,有一个命令可以单击上传按钮,这会打开一个文件对话框:

await webview2.ExecuteScriptAsync($"document.getElementById('uploadFile').click();");

从这里,我得到文件对话框并使用 SendKeys.Send("Filepath to file") 和 SendKeys.Send("{ENTER}") 填充文件路径并选择文件。

文件对话框关闭后,我有一个附加命令可以单击导入按钮开始导入。

我遇到的问题是文件对话框。使用 SendKeys 填充文件的路径显然不是一个很好的过程。另外,我必须让应用程序在 sendkeys 操作周围“等待”,以便文件对话框有时间在继续前进之前出现并关闭,我敢打赌,如果应用程序没有等待很长时间,就会出现错误足够的。

标签: winformswebview2

解决方案


推荐阅读