【问题标题】:Cross-platform implementation of SendKeys in C#?C#中SendKeys的跨平台实现?
【发布时间】:2018-06-24 20:21:06
【问题描述】:

我需要在 Windows、Mac 和 Linux 上自动化桌面应用程序(不是网络浏览器)测试。在 Windows 上我使用 SendKeys,我在 Mac 和 Linux 上使用什么?是否有任何跨平台的 .NET Core SendKeys 实现,我可以从 xUnit 中更好地使用?

【问题讨论】:

  • 你有没有找到任何方法来模拟 linux 上的键盘输入?

标签: c# linux macos cross-platform sendkeys


【解决方案1】:

您可以使用 mono/.net 核心的 SendKeys 类进行跨平台。

Linux 原生 - xdotool
Mac 原生 - herehere

【讨论】:

  • 谢谢杰森。使用 .NET Core 或 .NET Standard 中的 SendKeys 将是一个完美的解决方案。但是据我了解,SendKeys 在 .NET Core (docs.microsoft.com/en-us/dotnet/api/…) 以及整个 System.Windows.Forms 命名空间中不可用。还是我错过了什么?
【解决方案2】:

我不确定你的要求是否有意义。

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

根据定义,这不能包括任何特定于平台的功能,并且诸如 SendKeys 或显示消息框 (System.Windows.Forms) 之类的东西是特定于平台的(即使 WPF 和 WinForms 对此有不同的 API)。

是否有一个 .NET Core SendKeys 实现,我可以从 xUnit 中更好地使用?

我认为这是对你的问题感到困惑的地方。除非您使用 Selenium 或像 SikuliX、EggPlant、HP Functional 这样的胖客户端测试工具,否则您实际上不会为 GUI 编写 unit 测试。

这些通常被称为集成、系统或 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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-06-23
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 2014-05-05
      • 1970-01-01
      • 2011-04-14
      • 2021-03-15
      • 2010-12-25
      相关资源
      最近更新 更多