以编程方式查找消息框并生成单击按钮

Grz*_*nio 3 .net c# testing user-interface winforms

我正在尝试自动测试winform应用程序.我在与测试代码相同的过程中运行它,因此很容易找到.Net控件并模拟用户对它们的操作.然而,我得到了一个消息框(使用标准的MessageBox.Show方法创建).如何抓住它并模拟按下按钮?

Gis*_*shu 6

我建议治疗潜在的疾病,而不是症状.花几分钟时间阅读这些内容

简而言之,使用界面来分离所有模态对话框弹出窗口 - 这对于UI测试自动化来说是一个痛苦的问题.然后,您可以替换不执行任何操作或返回预定测试值的接口的模拟实现.真正的实现当然会以模态方式弹出实际的对话框......就像这样(来自第二个链接)

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

更简单的方法当然是编写一些代码来查找对话框并关闭/杀死它.我见过一些人在Win32 API和NUnitForms方面取得了一些成功......