处理Matlab对话框Windows的程序化方法

时间:2017-10-19 20:18:26

标签: matlab testing matlab-gui

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

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

有没有办法让Matlab代码判断它调用的函数是创建了warndlg还是msgbox?如果是这样,有没有办法点击“确定”#39;在这些弹出窗口?

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

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

2 个答案:

答案 0 :(得分:1)

两种方式。第一个更优雅

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

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

答案 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)

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