我正在尝试自动测试 winform 应用程序。我在与测试代码相同的进程中运行它,因此很容易找到 .Net 控件并模拟用户对它们的操作。然而,我有点被消息框(使用标准 MessageBox.Show 方法创建)卡住了。我怎样才能捕获它并模拟按下按钮?
最佳答案
我建议治疗潜在疾病而不是症状。 花几分钟阅读这些内容
简而言之,使用一个界面来分离所有模态对话框弹出窗口——这是 UI 测试自动化的一个难题。然后,您可以替换为不执行任何操作或返回预定测试值的接口(interface)的模拟实现。真正的实现当然会以模态方式弹出实际的对话框……就像这样(来自第二个链接)
public class UserInterrogator : IUserInterrogator
{
private Form owner;
public UserInterrogator(Form owner)
{ this.owner = owner; }
public Font GetFontFromUser() // member of the IUserInterrogator interface
{
FontDialog fd = new FontDialog();
fd.ShowDialog( owner );
return fd.Font;
}
}
更简单的方法当然是编写一些代码来找到对话框并关闭/终止它。我看到一些人在 Win32 API 和 NUnitForms 方面取得了一些成功......
关于c# - 以编程方式查找消息框并生成按钮点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1232459/