Кросс-платформенная реализация SendKeys в С#?

Мне нужно автоматизировать тестирование настольных приложений (а не веб-браузера) в Windows, Mac и Linux. В Windows я использую SendKeys, что я использую на Mac и Linux? Есть ли кросс-платформенная реализация .NET Core SendKeys, которую я могу использовать с xUnit?

Ответ 1

Я не уверен, что вы просите, имеет смысл.

.Net Core имеет только подмножество API, чтобы обеспечить кросс-платформенную функциональность. то есть разделяемые библиотеки, которые будут работать на разных платформах.

По определению это не может включать в себя какие-либо функциональные возможности платформы и такие вещи, как SendKeys или отображение ящиков сообщений (System.Windows.Forms). Специфичны для платформы (даже для WPF и WinForms для этого существуют разные API).

Есть ли реализация .NET Core SendKeys, которую я могу использовать с xUnit?

Я думаю, это то, что меня смущает вопрос о вашем вопросе. Если вы не используете Selenium или тестовый инструмент для жирного клиента, такой как SikuliX, EggPlant, HP Functional, вы на самом деле не пишете единичные тесты для графического интерфейса.

Они часто упоминаются как тесты интеграции, системы или GUI.

Как Selenium, так и SikuliX являются бесплатными и будут проходить межплатформенными. Они могут использоваться для отправки ключей. Поскольку вас не интересует Web, SikuliX - это то, что вы хотите.

Обзор SikuliX:

https://www.scribd.com/document/87620043/sikuliscript-Overview-by-student

Учебные видеоролики:

SikuliX Tutorial # 1 - Введение и настройка https://www.youtube.com/watch?v=VdCOg1bCmGo

SikuliX Tutorial # 2 - Основы https://www.youtube.com/watch?v=I-UYoezac4Q

SikuliX Tutorial # 3 - Условная автоматизация https://www.youtube.com/watch?v=vuqfDdPlI88

SikuliX Tutorial # 4 - Условное соединение https://www.youtube.com/watch?v=Bb513yh6RGE

SikuliX Tutorial # 5 - Пример игры https://www.youtube.com/watch?v=xTTIikzxFfc&t=816s

Ответ 2

Вы можете использовать класс SendKeys для ядра mono/.net для кросс-платформы.

Linux native - xdotool
Mac - здесь и здесь.