我正在使用 WebBrowser 控件进行一些自动化测试。问题是偶尔 - 不是所有时间 - 当我测试上传图像时,文件上传对话框没有关闭,程序只是“挂起”并等待手动输入,这违背了整个自动化过程的目的。我想要做的是“强制”关闭对话框,但一直无法弄清楚。任何帮助或方向将不胜感激。
需要意识到的是,这段代码在某些时候有效,但并非所有时候都有效。我需要帮助弄清楚如何让这段代码一直工作。
这是代码:
async Task PopulateInputFile(System.Windows.Forms.HtmlElement file, string fname)
{
file.Focus();
// delay the execution of SendKey 500ms to let the Choose File dialog show up
var sendKeyTask = Task.Delay(5000).ContinueWith((_) =>
{
// this gets executed when the dialog is visible
//SendKeys.Send(fname + "{ENTER}");
//PressKey(Keys.Space, false);
SendKeys.SendWait(fname);
PressKey(Keys.Enter, false);
}, TaskScheduler.FromCurrentSynchronizationContext());
file.InvokeMember("Click"); // this shows up the dialog
await sendKeyTask;
// delay continuation 500ms to let the Choose File dialog hide
await Task.Delay(5000);
}
async Task Populate(string fname)
{
var elements = webBrowser.Document.GetElementsByTagName("input");
foreach (System.Windows.Forms.HtmlElement file in elements)
{
if (file.GetAttribute("name") == "file")
{
this.Activate();
this.BringToFront();
file.Focus();
await PopulateInputFile(file, fname);
file.RemoveFocus();
}
}
}