Qt的UI测试:如何模拟使用QTEST一个QMenuBar项的点击?(Qt UI testing:

2019-09-03 00:53发布

我试图来模拟从QMenuBar一个QMenu项目鼠标点击,比如点击“另存为”的QAction使用QTestLib框架。

我在Windows XP 32位和Qt 5.0.2 triyng这一点。

有任何想法吗?

Answer 1:

也许这个问题是不相关的问题,老板,但我想这可能是别人有帮助的。

不像QToolBarQMenu没有办法widgetForAction 。 我发现这种情况下,一个简单的解决方法。 尝试弹出菜单QTest::mouseClick ,如果没有回应,建议使用QTest::keyClick(..., first_char_in_menu_tite, Qt::AltModifier) 为了模拟操作执行,你可以浏览Qt::Key_Down ,直到达到它的动作,然后按Qt::Key_Enter 。 我想下面的代码可以帮助你了解

QMenu *menu = getMenu(mainWindow, menuName);
if (menu != nullptr) {
    QTest::keyClick(mainWindow, menu->title().at(1).toLatin1(), Qt::AltModifier);
}


QList<QAction *> actions = menu->actions();
foreach (QAction *action, actions) {
    if (action->objectName() == actionName) {
        QTest::keyClick(menu, Qt::Key_Enter);
        break;
    }
    QTest::qWait(1000);
    QTest::keyClick(menu, Qt::Key_Down);
}


Answer 2:

您应该使用QTEST ::鼠标点击功能。 这将模拟在任何QWidget的点击。 我发现,试图点击导致阻塞调用不会与单元测试工作QMenu。



文章来源: Qt UI testing: How to simulate a click on a QMenuBar item using QTest?