0

我有一个相当大的基于 GUI 的 Matlab 程序。我正在考虑为它创建自动化测试,因为当前在发布前检查错误的方法只是像用户一样使用它的所有功能。

我宁愿不使用只记录点击和什么不记录的 GUI 测试程序,所以我正在考虑添加可以直接调用按钮回调的测试代码。我遇到的问题是我们有很多弹出窗口warndlgmsgbox我希望我的测试代码能够看到这些。

Matlab 代码有什么方法可以判断它调用的函数是否创建了warndlgor msgbox?如果是这样,有没有办法在这些弹出窗口上单击“确定”?

以类似的方式,是否可以处理阻止代码执行的弹出窗口(使用uiwaitinputdlg)?

如果这很重要,我没有使用 GUIDE,并且所有 GUI 元素都是以编程方式创建的

4

2 回答 2

1

两种方式。第一个更优雅

  • 让函数返回一个额外的变量并返回函数的状态。例如,1:成功,2:成功但有警告,3:错误...

  • 创建一些全局变量并让函数在出现warndlgmsbgbox时更改它们。然后主窗口将检查全局变量的状态。

于 2017-10-20T00:09:39.813 回答
0

您可以通过使用 findobj 函数查找它的标签来判断是否创建了警告对话框。使用 warndlg 创建的警告对话框将具有标签“Msgbox_Warning Dialog”。所以这样的代码会告诉你警告对话框是否存在:

set(0,'ShowHiddenHandles', 'on')
h = findobj('Tag', 'Msgbox_Warning Dialog');
warn_exists = ~isempty(h)
set(0,'ShowHiddenHandles', 'off')

要关闭警告对话框,您可以调用 delete,如下所示:

delete(h)

对于消息框,我会在您创建消息框时存储句柄,然后查看子项以找到按钮,然后查看他们的回调。您应该能够调用回调来模拟选择按钮。

于 2020-11-26T16:04:13.030 回答