c# - 以编程方式查找消息框并生成按钮点击

标签 c# .net winforms user-interface testing

我正在尝试自动测试 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/

相关文章:

c# - 'using' 应该在命名空间内部还是外部?

.net - 查询远程数据库时性能下降 - 这正常吗?

c# - 拖放 winform 控件

c# - 无法使用站点间连接从 Azure VM 连接 Azure SQL

c# - 将 unsigned long long 从 C++ 服务器流式传输到 C# 客户端

c# - 循环计算器

c# - 确保从内存中删除敏感数据

c# - otside 类放置在 Form 中的 Visual Studio 调用方法

c# - 将日志文件保持在一定大小以下

c# - Monotouch 绑定(bind)到 Linea Pro SDK