Я пытаюсь написать тест пользовательского интерфейса (с использованием Windows UI Automation) для приложения, которое использует QLabel, чтобы показать вывод пользователю.
Я создаю ярлык так:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QMainWindow w;
w.setWindowTitle("MyWindowTitle");
auto centralWidget = new QWidget(&w);
centralWidget->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
QVBoxLayout layout(centralWidget);
auto interrestingLabel = new QLabel(centralWidget);
QString valueCalculatedByApp = "1337";
interrestingLabel->setText(valueCalculatedByApp);
//interrestingLabel->setAccessibleName("MyAccessibleName");
layout.addWidget(interrestingLabel);
auto uninterrestingLabel = new QLabel(centralWidget);
uninterrestingLabel->setText("uninterrestingText");
layout.addWidget(uninterrestingLabel);
w.setCentralWidget(centralWidget);
w.show();
return a.exec();
}
Inspect.exe теперь отображает значение «1337» в качестве имени виджета:
Без доступного имени
Проблема с этим состояла бы в том, что мой тест пользовательского интерфейса должен был бы определить, какой из них является правильным.
Если я раскомментирую строку setAccessibleName, виджет теперь будет идентифицируемым, но текст больше не будет виден в свойствах.
с доступным именем
Есть ли способ прочитать текст QLabel с доступным именем, или есть ли другой способ сделать QLabel идентифицируемым, в то же время читая текст?