在C#中跨平台实现SendKeys?

时间:2018-01-16 07:22:27

标签: c# linux macos cross-platform sendkeys

我需要在Windows,Mac和Linux上自动执行桌面应用程序(不是Web浏览器)测试。在Windows上我使用SendKeys,我在Mac和Linux上使用什么?是否有任何跨平台的.NET Core SendKeys实现,我可以从xUnit中优先使用它?

3 个答案:

答案 0 :(得分:8)

我不确定你的要求是否合理。

.Net Core只有一部分API,以提供跨平台功能。即可在不同平台上运行的共享库。

根据定义,这不能包含任何特定于平台的功能,例如SendKeys或显示消息框(System.Windows.Forms)等特定于平台(甚至WPF和WinForms也有不同的API)。

  

我是否可以从xUnit中优先使用.NET Core SendKeys实现?

我认为这是关于你的问题的令人困惑的事情。除非您使用Selenium或胖客户端测试工具(如SikuliX,EggPlant,HP Functional),否则您实际上不会为GUI编写单元测试。

这些通常被称为集成,系统或GUI测试。

Selenium& SikuliX是免费的,将运行跨平台。它们可用于发送密钥。由于您对Web不感兴趣,所以SikuliX就是您想要的。

SikuliX概述:

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

培训视频

SikuliX教程#1 - 简介&建立 https://www.youtube.com/watch?v=VdCOg1bCmGo

SikuliX教程#2 - 基础知识 https://www.youtube.com/watch?v=I-UYoezac4Q

SikuliX教程#3 - 条件自动化 https://www.youtube.com/watch?v=vuqfDdPlI88

SikuliX教程#4 - 条件循环 https://www.youtube.com/watch?v=Bb513yh6RGE

SikuliX教程#5 - 游戏示例 https://www.youtube.com/watch?v=xTTIikzxFfc&t=816s

答案 1 :(得分:6)

您可以将mono / .net核心SendKeys类用于跨平台。

Linux native - xdotool
Mac原生 - herehere

答案 2 :(得分:0)

我正在开发一个可以做到这一点的库。

https://github.com/lucassklp/Desktop.Robot