Matlab对话框窗口的编程处理方法

Matlab对话框窗口的编程处理方法,matlab,testing,matlab-gui,Matlab,Testing,Matlab Gui,我有一个相当大的基于GUI的Matlab程序。我正在考虑为它创建自动化测试,因为当前在发布之前检查bug的方法只是像用户一样使用它的所有功能 我不想使用只记录点击次数的GUI测试程序,所以我想添加测试代码,直接调用按钮回调。我遇到的问题是,我们有很多warndlg和msgbox弹出窗口,我希望我的测试代码能够看到这些 Matlab代码有没有办法判断它调用的函数是否创建了warndlg或msgbox?如果是,有没有办法在这些弹出窗口上单击“确定” 同样,是否可以使用uiwait或inputdlg处

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

我不想使用只记录点击次数的GUI测试程序,所以我想添加测试代码,直接调用按钮回调。我遇到的问题是,我们有很多warndlg和msgbox弹出窗口,我希望我的测试代码能够看到这些

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

同样,是否可以使用uiwait或inputdlg处理阻止代码执行的弹出窗口


如果重要的话,我没有使用GUIDE,所有GUI元素都是通过编程方式创建的,有两种方式。第一个更优雅

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

创建一些全局变量,并在出现warndlg或msbgbox时使函数更改它们。然后,主窗口将检查全局变量的状态


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

set(0,'ShowHiddenHandles', 'on')
h = findobj('Tag', 'Msgbox_Warning Dialog');
warn_exists = ~isempty(h)
set(0,'ShowHiddenHandles', 'off')
要关闭警告对话框,可以调用delete,如下所示:

delete(h)

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

感谢@MosGeo的想法。我宁愿不去修改我所有的代码来添加额外的返回值。知道如何在不添加额外返回值的情况下创建弹出窗口吗?还有另一种方法:不要使用默认的warndlg或msbgbox。创建自己的函数来触发这两个函数。在这个过程中,他们修改了一些全局变量,就像我前面提到的那样。这样,您不必修改您的函数,只需调用新函数而不是原始函数。