我有一个基于GUI的相当大的Matlab程序。我正在研究为它创建自动化测试,因为在发布之前检查bug的当前方法就是使用像用户那样的所有功能。
我宁愿不使用仅记录点击次数的GUI测试程序,所以我想添加可直接调用按钮回调的测试代码。我遇到的问题是我们有很多warndlg
和msgbox
弹出窗口,我希望我的测试人员代码能够看到这些。
有没有办法让Matlab代码判断它调用的函数是创建了warndlg
还是msgbox
?如果是这样,有没有办法点击“确定”#39;在这些弹出窗口?
与此类似,是否可以处理阻止代码执行的弹出窗口(使用uiwait
或inputdlg
)?
如果重要我没有使用GUIDE,并且所有GUI元素都是以编程方式创建的
答案 0 :(得分:1)
两种方式。第一个更优雅
让函数返回一个额外的变量并返回函数的状态。例如,1:成功,2:成功警告,3:错误......
创建一些全局变量,并在warndlg
或msbgbox
出现时让函数更改它们。然后主窗口将检查全局变量的状态。
答案 1 :(得分: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)
对于消息框,我将在创建消息框时存储句柄,然后查看子级以找到按钮,然后查看其回调。您应该能够调用回调以模拟选择按钮。