在测试应用程序的GUI测试环境中,会出现这种情况(取决于正在测试的当前配置),提示用户通过QInputDialog
进行选择。
问题是,它保持运行测试,直到手动单击“确定”按钮(无需进一步操作)。但是,我不知道如何以编程方式检测此对话框。实际上我不确定是否可行,因为主循环将保留在打开对话框的函数中,直到它得到用户确认。
对话框
measure, ok = QtGui.QInputDialog.getItem(self.centralWidget, \
"Select the measure to apply", "Measure:", items, 0, False)
测试功能
print('--- Button click')
# Invokes some GUI action that in some cases includes a user input prompt via
# the QInputDialog above
self.p.TabValid.buttonRun.click()
# I tried these ones, but the program won't reach here
# because it is stuck as soon as the dialog opens
print('Widget with focus:', self.app.activeModalWidget())
print('Widget with focus:', self.app.focusWidget())
答案 0 :(得分:2)
只要事件循环正在运行,您的代码将始终处于控制之中。只需在定期计时器上执行一些代码,该计时器检查活动窗口小部件是否为QInputDialog
,并强制接受该输入。使用qApp.activeWindow
或qApp.activeModalWidget
。