使用Qtbot模拟菜单栏和工具栏中的鼠标单击

时间:2019-02-06 06:32:47

标签: python-3.x pyqt5 pytest-qt

我使用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)

2 个答案:

答案 0 :(得分:0)

我试图找到一种在菜单下触发动作的方法。由于您最有可能想要触发操作(菜单下的项目),因此这也可能对您有所帮助。代替使用qtbot,直接使用窗口并调用触发器。像这样:

    def test_quit(qtbot):
        window = MainWindow()
        qtbot.add_widget(window)
        window.show()
        qtbot.wait_for_window_shown(window)
        window.file_quit_action.trigger()

答案 1 :(得分: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 小部件后得到相同的结果。