3

我是使用 PYtestqt 在 PYQT5 中开发的记事本 GUI 自动化。当我尝试使用 qtbot 单击菜单栏或工具栏选项时,它没有模拟单击

def test_quit(qtbot):
    window = MainWindow()
    qtbot.add_widget(window)
    window.show()
    qtbot.wait_for_window_shown(window)
    qtbot.mouseClick(window.file_menu, QtCore.Qt.LeftButton)
4

2 回答 2

0

如果你只想触发点击事件连接动作,你可以试试这个。

在 MainWindow 类中:

    # binding action and function 
    action_open = QAction("Open", self)
    action_open.setCheckable(False)
    action_open.setObjectName("action_open")  # Notice set a object name
    action_open.triggered.connect(self.file_open)

在测试脚本中:

def test_file_open_action(qtbot):
    window = MainWindow()
    qtbot.add_widget(window)
    window.show()
    win.findChild(QAction, 'action_open').trigger()  # call the method

所以你可以在模拟点击 memubar 小部件后得到相同的结果。

于 2021-07-06T06:19:42.033 回答
0

我试图找到一种方法来触发菜单下的操作。由于您很可能想要触发一个动作(菜单下的项目),这也可能对您有所帮助。不用qtbot,直接用window,调用trigger。所以是这样的:

    def test_quit(qtbot):
        window = MainWindow()
        qtbot.add_widget(window)
        window.show()
        qtbot.wait_for_window_shown(window)
        window.file_quit_action.trigger()
于 2019-05-02T16:38:14.023 回答