You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WPF应用测试中检测MessageBox的弹出状态?

测试MessageBox弹出的实现方法

要验证除以零操作触发的MessageBox弹出行为,你可以在现有测试代码基础上添加弹窗捕获与验证逻辑,以下是具体实现:

核心思路

触发除以零操作后,等待并捕获弹出的MessageBox,验证它的存在性、标题和提示内容,最后模拟关闭弹窗完成测试。

修改后的测试代码

[TestMethod]
public void TestDisplayError()
{
    Application application = Application.Launch("D:\\VS projects\\2Lab\\2Lab\\bin\\Debug\\netcoreapp3.1\\2Lab.exe");
    Window window = application.GetWindows().First();
    TextBox t1 = window.Items[5] as TextBox;
    TextBox t2 = window.Items[4] as TextBox;
    List<Button> buttons = CreateButtonList(window);
    t1.Text = "5";
    t2.Text = "0";
    
    // 提前启动线程等待捕获MessageBox
    MessageBox messageBox = null;
    var waitThread = new Thread(() =>
    {
        // 根据实际弹窗标题调整,或直接通过类型捕获
        messageBox = application.GetWindow<MessageBox>(InitializeOption.NoCache);
    });
    waitThread.Start();
    
    // 触发除以零操作
    DevideButtonClick(buttons);
    
    // 设置5秒超时等待弹窗捕获完成
    waitThread.Join(TimeSpan.FromSeconds(5));
    
    // 验证弹窗是否正常弹出
    Assert.IsNotNull(messageBox, "未弹出除数为零的错误提示框");
    
    // 验证弹窗的标题和内容(替换为你实际的弹窗文本)
    Assert.AreEqual("错误提示", messageBox.Title);
    Assert.AreEqual("除数不能为0,请重新输入", messageBox.Message);
    
    // 模拟点击确定按钮关闭弹窗
    messageBox.ClickButton("确定");
}

额外注意事项

  • 若使用的是其他UI自动化框架(如WinAppDriver),逻辑一致:触发操作后等待弹窗元素加载,验证元素属性再模拟交互。
  • 超时时间可根据实际弹窗加载速度调整,避免因系统延迟导致测试失败。
  • 测试前确保环境无其他干扰弹窗,防止捕获错误窗口。

内容的提问来源于stack exchange,提问作者Nikolay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 22:50:30