有两个下拉菜单。我正在尝试单击 QComboBox 下拉列表中的项目。
为此,我创建了一个为两个下拉菜单启动的函数,以下是摘录:
constexpr int DELAY{ 1000 };
void clickDropDown(int row, QComboBox *comboBox)
{
QListView *dropDownList = comboBox->findChild<QListView *>();
QModelIndex foundIndex{ dropDownList->model()->index(row, 0) };
QRect foundDropDownItem = dropDownList->visualRect(foundIndex);
QPoint foundDropDownItemPosition = foundDropDownItem.center();
QWidget *activeWidget = dropDownList->viewport();
QTest::mouseClick(activeWidget, Qt::LeftButton, Qt::NoModifier, foundDropDownItemPosition);
QTest::qWait(DELAY); // waits 1 second
}
现在流程看起来像这样:
- 显示第一个下拉列表,
- 该项目突出显示 (mouseClick) 作为选择,但不是真正选择,未选择
- UI 测试转到第二列,第一列显示列表中的第一个元素(即最上面的元素),尽管突出显示了什么;
- 第二个下拉列表中的一个项目被选中/选择
所以,第二个列表似乎可以使用这个函数,第一个没有。我需要选择这些项目,而不仅仅是突出显示。
我在Ubuntu 21.04上运行。似乎在Windows 10上运行良好。在 Mac 上似乎失败了。任何建议如何使它工作?
什么有效:
two clicks
+ Enter
,但这会在 MacOs 上崩溃。所以这不是一个真正的解决方案。此外,它会破坏dropDownList
对象,如果 make 有间隔,将导致崩溃。
还有什么不起作用: key down
N次。
有什么建议么?